Maison >développement back-end >Golang >Un littéral Go Struct peut-il attribuer directement un vrai pointeur booléen sans variables supplémentaires ?
Définition du pointeur booléen sur True dans les littéraux Struct
Question :
Une fonction nécessite un pointeur vers une valeur booléenne. Un littéral de structure peut-il être utilisé pour définir le champ sur true sans introduire de variables supplémentaires ?
Réponse :
Oui, c'est possible, mais pas idéal :
h := handler{is: &[]bool{true}[0]}
Cette solution crée une tranche avec une seule valeur booléenne true, indexe son premier élément et attribue son adresse au champ is. Bien que de nouvelles variables soient évitées, le passe-partout et la persistance du tableau de support présentent des inconvénients.
Meilleures solutions :
func newTrue() *bool { b := true return &b }
h := handler{is: newTrue()}
h := handler{is: func() *bool { b := true; return &b }()}
h := handler{is: func(b bool) *bool { return &b }(true)}
Pour plus d'options, reportez-vous à " Comment faire un littéral *int64 dans Go?".
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!