Maison > Article > développement back-end > Pourquoi Golang n'a pas de « cours »
Le domaine actuel de l'informatique se développe et innove constamment. En termes de langages de programmation, les langages de programmation orientés objet qui étaient courants dans le passé, comme Java, C++, etc., ont désormais été remplacés par de nouveaux langages de programmation. Parmi eux, Golang, très apprécié des développeurs, est un langage qui ne prend pas en charge le modèle de programmation orienté objet traditionnel. Cet article explorera pourquoi Golang n'a pas de « classes » et comment implémenter des modèles de programmation similaires par d'autres moyens.
La conception de Golang visant à supprimer les classes est une tentative d'aller à l'encontre de la conception traditionnelle du langage orienté objet. Dans les langages orientés objet traditionnels, une classe est une structure de programme fixe qui contient des propriétés et des méthodes. Par conséquent, lors de la conception d’un système prenant en charge la programmation orientée objet (POO, Object-Oriented Programming), il est généralement nécessaire de traiter avec des classes orientées objet.
Cependant, Golang n'est pas seulement un langage de programmation doté de fonctionnalités de langage orienté objet, son objectif est de devenir un langage généraliste contenant à la fois des paradigmes de programmation orientés processus et orientés objet. Par conséquent, Golang possède des fonctionnalités de programmation très utiles, notamment :
Dans Golang, contrairement aux langages orientés objet traditionnels tels que Java et C++, il existe is no Les classes sont remplacées par des "structs", qui sont des types personnalisés. Grâce aux structures, nous pouvons organiser des variables et les regrouper, puis utiliser des méthodes pour opérer sur ces structures.
Par exemple, ce qui suit est une définition de structure simple :
type Person struct { name string age int }
Exemple de création d'une structure Personne :
p1 := Person{name: "John", age: 26}
Appeler la méthode de la structure :
p1.hello() //在Person结构中定义的方法
Grâce aux structures, nous pouvons facilement implémenter des opérations de type classe sans avoir besoin d'une utilisation de classe fixe dans les langages de programmation orientés objet.
Une méthode en Golang est une fonction qui peut opérer sur une structure. En définissant des méthodes via des types de structure, les variables peuvent être liées à des méthodes au lieu de lier des méthodes à des classes comme les langages orientés objet traditionnels. Les méthodes peuvent être utilisées pour manipuler des structures et effectuer des opérations sur celles-ci.
Par exemple, pour la structure Personne définie dans l'exemple ci-dessus, vous pouvez définir une méthode de salutation :
func (p Person) hello() { fmt.Printf("My name is %s, I'm %d years old.\n", p.name, p.age) }
La méthode dans l'exemple ci-dessus est définie directement sur la structure, ce qui ressemble un peu aux "méthodes membres" dans la programmation orientée objet. Dans Golang, les méthodes sur une structure sont généralement définies dans le fichier de définition de la structure, mais le fichier de définition n'est pas obligatoire.
Dans Golang, l'interface est un type personnalisé. Une interface définit les signatures d'un ensemble de méthodes, et un type est considéré comme implémentant l'interface s'il définit toutes les méthodes requises. Un type avec une interface peut être remplacé par une interface et défini avec le même ensemble de méthodes.
L'interface est un concept très important dans Golang, qui peut rendre la relation entre les modules du programme plus transparente. Lorsque les développeurs fournissent une interface pour un module, ils peuvent conserver la signature de la méthode appelée sans avoir à implémenter l'implémentation spécifique du module. Les développeurs ultérieurs pourront le remplacer par une implémentation plus riche, ce qui contribuera à améliorer l'évolutivité du programme.
Les fonctions de Golang sont des citoyens de première classe, ce qui signifie que les fonctions sont des objets. Les fonctions peuvent être affectées à des variables et peuvent être reçues comme paramètres et valeurs de retour par d'autres fonctions. Il s'agit d'un concept très important dans Golang, car beaucoup de gens pensent que les fonctions sont un moyen plus naturel de réaliser une conception orientée objet.
Bien que Golang lui-même n'ait aucune notion de classes, les développeurs peuvent utiliser des structures et des méthodes pour simuler ce modèle de programmation. Cette méthode est appelée « instance » dans Go.
Par exemple, supposons que nous souhaitions définir des opérations de type classe pour une structure nommée Person :
type Person struct { name string age int }
Voici quelques méthodes (similaires aux fonctions membres de classe) : # 🎜🎜 #
func (p *Person) SetName(name string) { p.name = name } func (p *Person) SetAge(age int) { p.age = age } func (p *Person) GetAge() int { return p.age }L'exemple ci-dessus définit trois méthodes pour faire fonctionner la structure Person : SetName, SetAge et GetAge. La valeur originale de la structure peut être modifiée à l'aide des paramètres du pointeur. Ce qui suit est un exemple de la façon de créer une structure Personne :
p := Person{"Golang", 10}Où "p" est une "instance" comme une classe. Ensuite, nous pouvons "créer" une nouvelle instance de la structure en utilisant une fonction. Voici un exemple :
func NewPerson(name string, age int) *Person { p := Person{name, age} return &p }La fonction "NewPerson" peut être utilisée ainsi et renverra un pointeur vers l'instance "Golang" :
p := NewPerson("Golang", 10)Bien que "l'instance" n'est pas comme les « classes » dans les langages de programmation orientés objet traditionnels, mais la façon dont les structures et les méthodes sont utilisées dans Golang peut simuler le concept de classes de manière très similaire. ConclusionBien qu'il n'y ait pas de classes, les structures et méthodes de Golang concilient l'utilisation de paradigmes de programmation orientée objet et procédurale. À l'aide de structures et de méthodes, nous pouvons implémenter un modèle de programmation similaire aux classes pour gérer les variables et les opérations. Par conséquent, Golang peut utiliser ces fonctionnalités linguistiques très utiles même sans cours, ce qui en fait un langage de développement Web rapide, flexible et puissant.
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!