Maison  >  Article  >  développement back-end  >  Le langage Go a-t-il des constructeurs ?

Le langage Go a-t-il des constructeurs ?

青灯夜游
青灯夜游original
2023-01-10 14:15:421370parcourir

Le langage Go n'a pas de constructeurs. Le langage Go, en tant que langage structuré, n'a pas de constructeurs dans les langages orientés objet. Cependant, des effets similaires des constructeurs dans les langages orientés objet peuvent être obtenus de certaines manières, c'est-à-dire en utilisant le processus d'initialisation de la structure pour simuler le. mise en œuvre des constructeurs.

Le langage Go a-t-il des constructeurs ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

Le constructeur est une méthode spéciale, principalement utilisée pour initialiser l'objet lors de sa création, c'est-à-dire attribuer des valeurs initiales aux variables membres de l'objet. Une classe spéciale peut avoir plusieurs constructeurs, qui peuvent être distingués en fonction du nombre de paramètres ou des types de paramètres, c'est-à-dire de la surcharge des constructeurs.

En tant que langage structuré, Golang ne dispose pas des méthodes de construction des langages orientés objet, mais Golang peut implémenter des idées et des méthodes de programmation orientées objet comme l'héritage et des constructeurs comme C++.

À cause du struct 是值类型,如果结构体比较复杂的话,值拷贝 性能开销会比较大,所以该构造函数返回的是结构体指针type.

Spécification

  • Commencer avec un nouveau mot-clé

  • Retour du pointeur de structure

Plusieurs façons de créer et d'initialiser des structures - simuler la surcharge du constructeur

Si vous utilisez des structures Décrire les caractéristiques de chats, alors il peut y avoir différents types de chats selon la couleur et le nom du chat. Ensuite, différentes couleurs et noms sont des champs de la structure. En même temps, vous pouvez utiliser des couleurs et des noms pour construire des instances de différents types de chats. le processus peut être référencé au code suivant :

type Cat struct {
    Color string
    Name  string
}
func NewCatByName(name string) *Cat {
    return &Cat{
        Name: name,
    }
}
func NewCatByColor(color string) *Cat {
    return &Cat{
        Color: color,
    }
}

La description du code est la suivante :

  • La ligne 1 définit la structure Cat, y compris les champs de couleur et de nom.

  • La ligne 6 définit une fonction qui construit une structure cat par nom et renvoie un pointeur Cat.

  • La ligne 7 prend l'adresse et instancie la structure cat.

  • La ligne 8 initialise le champ du nom du chat, en ignorant le champ de couleur.

  • La ligne 12 définit la fonction qui construit la structure cat avec la couleur et renvoie le pointeur Cat.

Dans cet exemple, les types des deux attributs, color et name, sont tous deux des chaînes. Puisqu'il n'y a pas de surcharge de fonctions dans le langage Go, afin d'éviter les conflits de noms de fonctions, deux fonctions différentes, NewCatByName() et. NewCatByColor(), sont utilisés. Les noms représentent différents processus de construction Cat.

Construction et initialisation de structures avec des relations parent-enfant - simulation d'appels de construction parentale

Le chat noir est une sorte de chat, et chat est un terme général pour chat noir lorsqu'on décrit ces deux concepts en même temps. , Il est dérivé. Le chat noir est dérivé du type de chat Lorsque vous utilisez une structure pour décrire la relation entre le chat et le chat noir, intégrez la structure du chat (Cat) dans le chat noir (BlackCat), indiquant que le chat noir a le. caractéristiques de cat, puis utilisez deux constructeurs différents pour construire respectivement les instances de chat noir et de structure de chat. Reportez-vous au code suivant :

type Cat struct {
    Color string
    Name  string
}
type BlackCat struct {
    Cat  // 嵌入Cat, 类似于派生
}
// “构造基类”
func NewCat(name string) *Cat {
    return &Cat{
        Name: name,
    }
}
// “构造子类”
func NewBlackCat(color string) *BlackCat {
    cat := &BlackCat{}
    cat.Color = color
    return cat
}

La description du code est la suivante :

  • La ligne 6 définit la structure BlackCat et intègre le chat. structure , BlackCat possède tous les membres de Cat et peut accéder librement à tous les membres de Cat après instanciation.

  • Ligne 11, la fonction NewCat() définit le processus de construction de Cat, en utilisant le nom comme paramètre pour remplir la structure Cat.

  • Ligne 18, NewBlackCat() utilise la couleur comme paramètre et le constructeur renvoie un pointeur BlackCat.

  • Ligne 19, instanciez la structure BlackCat, et Cat est également instancié en même temps.

  • Ligne 20, remplissez l'attribut de couleur Cat intégré dans BlackCat BlackCat n'a aucun membre, et tous les membres proviennent de Cat.

Dans cet exemple, la structure Cat est similaire à la "classe de base" en orienté objet, et BlackCat est intégré dans la structure Cat, qui est similaire à "dérivée" en orienté objet. Lorsqu'il est instancié, le Cat. dans BlackCat sera également inclus et instancié.

En bref, le langage Go ne fournit pas de mécanisme spécial lié aux constructeurs. Les utilisateurs peuvent effectuer la tâche du constructeur en passant les paramètres dans les paramètres de construction de la structure en fonction de leurs propres besoins.

【Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation

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