Le langage Go a-t-il des constructeurs ?
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.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Gérez efficacement les problèmes de sécurité de la concurrence dans la rédaction de journaux multiproces. Plusieurs processus écrivent le même fichier journal en même temps. Comment s'assurer que la concurrence est sûre et efficace? C'est un ...

La suppression automatique des contraintes de type de fonction générique Golang dans les utilisateurs de VScode peut rencontrer un problème étrange lors de l'écriture de code Golang à l'aide de VScode. quand...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

En ce qui concerne le problème des balises de structure personnalisées dans Goland lorsque vous utilisez Goland pour le développement du langage GO, vous rencontrez souvent des problèmes de configuration. L'un d'eux est ...

Comment implémenter des fonctions d'exécution, d'arrêt et de rechargement de l'arrière-plan à Golang? Pendant le processus de programmation, nous devons souvent implémenter un fonctionnement de fond et nous arrêter ...

GO Language Slice Index: Pourquoi une tranche à élément unique intercepte-t-elle de l'index 1 sans erreur? En langue GO, les tranches sont une structure de données flexible qui peut se référer au bas ...
