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

optionales Array in der Struktur

WBOY
Freigeben: 2024-02-05 23:15:14
nach vorne
1005 Leute haben es durchsucht

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"`
}
Nach dem Login kopieren
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,
        })
    }

    ...
}
Nach dem Login kopieren

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 {
  ...
}
Nach dem Login kopieren

Ü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)
    }
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage