Maison >développement back-end >Golang >Comment puis-je initialiser des structures Go sans les constructeurs traditionnels ?

Comment puis-je initialiser des structures Go sans les constructeurs traditionnels ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 05:29:18202parcourir

How Can I Initialize Go Structs Without Traditional Constructors?

Les constructeurs peuvent-ils être utilisés pour initialiser des structures Go ?

Dans Go, les structures peuvent être initialisées avec des valeurs par défaut raisonnables via diverses méthodes. Malgré le manque de constructeurs traditionnels en raison de la nature non-POO de Go, il existe des techniques alternatives pour obtenir des fonctionnalités similaires.

Méthode 1 : fonction NewThing avec retour de pointeur

Quand les valeurs nulles ne conviennent pas, une option consiste à créer une fonction "NewThing" qui renvoie un pointeur vers un objet nouvellement initialisé. struct :

type Thing struct {
    Name  string
    Num   int
}

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

Méthode 2 : fonction "NewThing" condensée

Pour les structures plus simples, une méthode plus concise est disponible :

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

Méthode 3 : Fonction "makeThing" avec valeur Retour

Si le renvoi d'un pointeur n'est pas souhaité, la fonction peut être nommée "makeThing" et renvoyer une valeur :

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

Référence

Pour plus de détails, reportez-vous à la section « Allocation avec nouveau » dans Effective Go.

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