Valeurs par défaut des structures Go
Dans Go, les structures (structs) ont des valeurs par défaut pour leurs champs. Par exemple, les nombres entiers (int) sont par défaut 0. Bien que cela soit utile dans de nombreux scénarios, cela peut poser un défi lorsque vous avez un scénario dans lequel 0 est une valeur valide. Cela rend difficile de savoir si un champ dans une structure a été explicitement défini ou non.
Distinction entre les valeurs par défaut et les valeurs définies
Malheureusement, Go ne fournit pas de moyen de déterminer directement si un champ a été défini ou initialisé à sa valeur par défaut. Cependant, vous pouvez utiliser deux approches :
Utilisation de pointeurs
Vous pouvez utiliser des pointeurs pour les champs qui peuvent ne pas être définis. Les pointeurs ont une valeur nulle nulle, que vous pouvez utiliser pour vérifier si un champ a été défini :
type Test struct { TestIntOne *int TestIntTwo *int }
Dans ce cas, TestIntOne et TestIntTwo sont des pointeurs vers des entiers. Si TestIntOne est nul, cela signifie qu'il n'a pas été défini, tandis que s'il n'est pas nul, il a été défini sur une valeur non nulle.
Utilisation d'une méthode
Vous pouvez également créer une méthode qui définit le champ et suit s'il a été défini ou non :
type Test struct { TestIntOne int TestIntTwo int isSetOne, isSetTwo bool } func (t *Test) SetIntOne(i int) { t.TestIntOne = i t.isSetOne = true }
Avec ceci méthode, vous pouvez contrôler le paramètre de TestIntOne, et la propriété isSetOne indiquera si elle a été définie ou non.
Conclusion
Alors que les structures Go ont des valeurs par défaut pour leurs champs, il n'existe aucun moyen direct de déterminer si un champ a été défini manuellement ou initialisé à sa valeur par défaut. Cependant, en utilisant des pointeurs ou des méthodes, vous pouvez contourner cette limitation et conserver l'état des champs de votre structure.
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!