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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-12-17 18:37:14528parcourir

How Can I Initialize Structs in Go Without Traditional Constructors?

Constructeurs en Go : alternatives pour garantir des valeurs par défaut raisonnables

Traditionnellement, les constructeurs sont utilisés pour initialiser des objets dans les langages de programmation orientés objet. Cependant, dans Go, qui adopte une approche différente de la conception orientée objet, il n'y a pas de constructeurs au sens conventionnel du terme.

Pour répondre au besoin de définir des valeurs par défaut raisonnables pour les structures, Go propose plusieurs alternatives. Une option est la méthode init, qui s'exécute au niveau du package. Cependant, cette approche ne convient pas à l'initialisation de structures individuelles.

Une pratique plus courante consiste à créer une fonction NewThing qui prend les paramètres nécessaires et renvoie un pointeur vers une structure initialisée. Cette fonction permet de définir des valeurs spécifiques tout en attribuant des valeurs par défaut à d'autres champs. Par exemple :

type Thing struct {
    Name  string
    Num   int
}

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

Une version condensée de cette fonction serait :

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

Si le retour d'un pointeur n'est pas souhaitable, une autre option consiste à créer une fonction makeThing qui renvoie directement une valeur :

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

Cette approche convient aux structures relativement simples et ne nécessitant pas de pointeurs. Il convient de noter que le nouveau mot-clé alloue de la mémoire dans Go, il est donc important de prendre en compte les pratiques de gestion de la mémoire lorsque vous travaillez avec des pointeurs.

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