Maison >développement back-end >Golang >Comment puis-je initialiser des structures avec des valeurs par défaut raisonnables dans Go ?

Comment puis-je initialiser des structures avec des valeurs par défaut raisonnables dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 15:04:09466parcourir

How Can I Initialize Structs with Sensible Default Values in Go?

Constructeurs en Go : un guide des valeurs par défaut raisonnables

Lorsque vous travaillez avec des structures dans Go, les initialiser avec des valeurs par défaut raisonnables peut être crucial pour garantir leur bon fonctionnement. Bien que Go manque de constructeurs traditionnels, plusieurs méthodes peuvent être utilisées pour atteindre cet objectif.

Méthode Init

La méthode init, bien que définie au niveau du package, peut être utilisé pour effectuer des tâches d’initialisation des structures du package. Cependant, il n'est pas directement lié à la structure et n'est pas invoqué lors de la création de la structure.

Nouvelles fonctions

Une pratique courante dans Go consiste à définir de nouvelles fonctions qui renvoie les pointeurs initialisés vers les structures. Ces fonctions permettent l'attribution de valeurs par défaut lors de l'initialisation de la structure :

func NewThing(someParameter string) *Thing {
    p := new(Thing)
    p.Name = someParameter
    p.Num = 33 // Sensible default value
    return p
}

Nouvelles fonctions condensées

Pour les structures simples, une version condensée de la nouvelle fonction peut être utilisé, renvoyant directement une structure initialisée :

func NewThing(someParameter string) *Thing {
    return &Thing{someParameter, 33}
}

Make Fonctions

Les fonctions Make sont similaires aux fonctions New mais renvoient des structures par valeur plutôt que par des pointeurs. Ceci est utile lorsque vous n'avez pas besoin d'un pointeur vers la structure :

func makeThing(name string) Thing {
    return Thing{name, 33}
}

Référence

Pour plus d'informations sur l'allocation à l'aide de new, reportez-vous au Go effectif documentation : https://go.dev/doc/effective_go#allocation

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