Maison >développement back-end >Golang >Comment attribuer True à un pointeur bool dans les littéraux Go Struct ?
Dans Go, attribuer des valeurs aux pointeurs dans les littéraux de structure peut être délicat. Plus précisément, définir un pointeur bool sur true peut nécessiter une solution de contournement.
Considérez la fonction suivante qui accepte un pointeur booléen :
import "fmt" func main() { fmt.Println("Hello, playground") check(handler{is: new(bool)}) } type handler struct{ is *bool } func check(is handler){}
Pour attribuer le champ is à true dans le littéral de structure, on pourrait supposer qu'une notation simple existe :
handler{is: &true} // This is invalid
Malheureusement, ce n'est pas une syntaxe Go valide. Pour définir le pointeur bool sur true, une solution de contournement est requise.
Une méthode consiste à créer une tranche contenant une seule valeur booléenne true et à indexer son premier élément :
h := handler{is: &[]bool{true}[0]} fmt.Println(*h.is) // Prints true
Bien que cela vous permette de définir le pointeur sur true, cela crée inutilement un tableau de tranches qui restera en mémoire jusqu'à l'adresse de son premier élément est supprimé.
Une solution plus propre consiste à créer une fonction d'assistance qui renvoie un pointeur vers une variable bool initialisée à true :
func newTrue() *bool { b := true return &b }
Cette fonction peut ensuite être utilisé dans la structure littérale :
h := handler{is: newTrue()} fmt.Println(*h.is) // Prints true
D'autres options pour définir le pointeur sur true incluent des fonctions anonymes :
h := handler{is: func() *bool { b := true; return &b }()} fmt.Println(*h.is) // Prints true
Ou une variante :
h := handler{is: func(b bool) *bool { return &b }(true)}
Celles-ci permettent une syntaxe concise mais peuvent être moins lisible que l'approche de la fonction d'assistance.
Lors de la définition d'un pointeur booléen sur true Les littéraux de structure peuvent sembler une tâche simple, ils nécessitent une syntaxe spécifique ou l'utilisation d'une solution de contournement. Connaître ces méthodes permet aux programmeurs Go d'attribuer efficacement des valeurs aux pointeurs dans diverses situations.
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!