Maison >développement back-end >Golang >Un littéral Go Struct peut-il attribuer directement un vrai pointeur booléen sans variables supplémentaires ?

Un littéral Go Struct peut-il attribuer directement un vrai pointeur booléen sans variables supplémentaires ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-15 07:20:11120parcourir

Can a Go Struct Literal Directly Assign a True Boolean Pointer Without Extra Variables?

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 :

  • Fonction d'assistance :
func newTrue() *bool {
    b := true
    return &b
}
h := handler{is: newTrue()}
  • Anonyme Fonction :
h := handler{is: func() *bool { b := true; return &b }()}
  • Variante One-Liner :
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn