Heim >Backend-Entwicklung >Golang >optionales Array in der Struktur

optionales Array in der Struktur

WBOY
WBOYnach vorne
2024-02-05 23:15:141008Durchsuche

optionales Array in der Struktur

Frageinhalt

Ich möchte ein Array in einer Struktur optional machen und es mit if else in einer Funktion verwenden.

type testvalues struct {
    test1 string `json:"test1"`
    defaulttests []string `json:"__tests"`

    //defaulttests *array `json:"__tests,omitempty" validate:"option"`
    test2 string `json:"__test2"`
}
func (x *Controller) createTest(context *gin.Context, uniqueId string, testBody *TestValues) (*http.Response, error) {

    if testBody.DefaultTags {
        postBody, err := json.Marshal(map[string]string{
            "Test2":              testBody.Test2,
            "Test1":                  testBody.Test1,
            "defaultTests":         testBody.DefaultTests,
            "uniqueId":                  uniqueId,
        })
    } else {
        postBody, err := json.Marshal(map[string]string{
            "Test2":              testBody.Test2,
            "Test1":                  testBody.Test1,
            "uniqueId":                  uniqueId,
        })
    }

    ...
}

Wenn ich den Code ausführe, wird mir mitgeteilt, dass es sich bei „defaulttests“ um ein undefiniertes Array handelt. Ich möchte jedoch nicht, dass dieser Fehler auftritt, da „defaulttests“ vorhanden sein kann und manchmal nicht im JSON angezeigt wird. Aus diesem Grund möchte ich ihn als optionalen Grund angeben . Der if else-Teil funktioniert auch nicht.


Richtige Antwort


Bei der Überprüfung, ob ein Array leer ist, verwenden Sie am besten len() .

if len(testbody.defaulttests) > 0 {
  ...
}

Überprüfen Sie den Nullwert von defaulttests in der Struktur unten, um dieses Verhalten besser zu verstehen

package main

import "fmt"

type TestValues struct {
    Test1        string   `json:"test1"`
    DefaultTests []string `json:"__tests"`

    //DefaultTests *array `json:"__tests,omitempty" validate:"option"`
    Test2 string `json:"__Test2"`
}

func main() {
    var tv = TestValues{Test1: "test"}

    if len(tv.DefaultTests) > 0 {
        fmt.Printf("Default Tests: %v\n", tv.DefaultTests)
    } else {
        fmt.Printf("Default Tests empty value: %v\n", tv.DefaultTests)
    }
}

Das obige ist der detaillierte Inhalt vonoptionales Array in der Struktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen