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
Libérer: 2024-12-17 18:37:14
original
576 Les gens l'ont consulté

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

Une version condensée de cette fonction serait :

func NewThing(name string) *Thing {
    return &Thing{name, 33}
}
Copier après la connexion

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

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal