Heim >Backend-Entwicklung >Golang >optionales Array in der Struktur
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.
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!