Maison >développement back-end >Golang >Comment puis-je définir efficacement un pointeur Bool sur True dans un littéral Go Struct ?

Comment puis-je définir efficacement un pointeur Bool sur True dans un littéral Go Struct ?

DDD
DDDoriginal
2024-12-02 09:21:12258parcourir

How Can I Efficiently Set a Bool Pointer to True within a Go Struct Literal?

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!

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