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
Libérer: 2024-12-02 09:21:12
original
156 Les gens l'ont consulté

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})
}
Copier après la connexion

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]}
Copier après la connexion

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
}
Copier après la connexion

Avec cette fonction, définir le pointeur booléen dans le littéral de structure devient :

h := handler{is: newTrue()}
Copier après la connexion

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 }()}
Copier après la connexion

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)}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal