Je souhaite rendre un tableau facultatif dans une structure et l'utiliser avec if else dans une fonction.
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, }) } ... }
Lorsque j'exécute le code, cela me dit que defaulttests est un tableau non défini mais je ne veux pas que cette erreur apparaisse car les defaulttests peuvent exister et parfois ils n'apparaissent pas dans le json et c'est pourquoi je veux le rendre facultatif. . La partie if else ne fonctionne pas non plus.
Lorsque vous vérifiez si un tableau est vide, il est préférable d'utiliser len() .
if len(testbody.defaulttests) > 0 { ... }
Vérifiez la valeur zéro des tests par défaut dans la structure ci-dessous pour comprendre plus clairement ce comportement
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) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!