Définition du pointeur Bool dans un littéral Struct
Dans Go, lors du passage d'un pointeur vers un booléen dans une fonction, il est possible de définir le valeur du champ booléen dans le littéral de structure directement. Cependant, la syntaxe standard nécessite de définir un nouvel identifiant, comme indiqué ci-dessous :
func check(is handler){} type handler struct{ is *bool } func main() { var x bool = true check(handler{is: &x}) }
Pour contourner cette exigence et définir le pointeur booléen sur true directement dans le littéral de structure, il existe plusieurs approches :
Option 1 : Utiliser une Slice
Cette méthode crée une tranche avec un seul booléen de valeur true, indexe son premier élément et prend son adresse :
h := handler{is: &[]bool{true}[0]}
Bien que cette technique évite de définir une nouvelle variable, elle introduit un passe-partout inutile et laisse un tableau de sauvegarde en mémoire.
Option 2 : Utiliser une fonction d'assistance
Une solution plus optimale consiste à créer une fonction d'assistance qui génère un pointeur booléen avec un vrai value :
func newTrue() *bool { b := true return &b }
Avec cette fonction, définir le pointeur booléen dans le littéral de structure devient :
h := handler{is: newTrue()}
Option 3 : Utiliser des fonctions anonymes One-Liner
Une autre méthode consiste à utiliser des fonctions anonymes pour accomplir la même tâche en une seule fois. ligne :
h := handler{is: func() *bool { b := true; return &b }()}
Option 4 : Variante avec fonction anonyme
Une légère variation de l'approche précédente :
h := handler{is: func(b bool) *bool { return &b }(true)}
Ces techniques fournissent alternatives pour définir un pointeur booléen sur true dans un littéral de structure sans avoir besoin d'identifiants supplémentaires ou de surcharge inutile. Les développeurs peuvent choisir l'approche qui correspond le mieux à leurs besoins et à leurs préférences de style.
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!