Maison  >  Article  >  développement back-end  >  Comment utiliser des classes pour implémenter une programmation orientée objet en langage Go

Comment utiliser des classes pour implémenter une programmation orientée objet en langage Go

PHPz
PHPzoriginal
2023-04-18 15:23:05693parcourir

Ces dernières années, le langage Go, en tant que langage de programmation émergent et efficace, a été privilégié par de plus en plus de programmeurs. Avec de nombreux avantages tels qu'une concurrence élevée, la prise en charge officielle du multithreading et une syntaxe concise, il est progressivement devenu le langage préféré pour le développement back-end de nombreuses applications. Dans le langage Go, la programmation orientée objet est également prise en charge. Cet article explique comment utiliser les classes du langage Go pour implémenter la programmation orientée objet.

Le langage Go est différent des langages de programmation orientés objet traditionnels dans le sens où il ne prend pas directement en charge le mot-clé class. Cependant, grâce à la combinaison de la structure struct et de la méthode, les fonctions de la classe peuvent toujours être réalisées. Dans le langage Go, la structure struct est toujours utilisée pour définir les « classes », et le comportement, les attributs et autres caractéristiques des « classes » sont implémentés via des méthodes de méthode.

Afin de mieux comprendre comment utiliser les classes en langage Go, cet article expliquera sous les aspects suivants :

  1. Définition de la classe

En langage Go, une "classe" est définie via struct Cette structure struct La. les propriétés des « classes » peuvent être définies dans le corps. Par exemple :

type Person struct {
    Name string
    Age int
}

Le code ci-dessus définit une classe Person, qui a deux attributs, à savoir Name et Age. Dans le langage Go, si vous souhaitez définir une propriété comme privée, vous pouvez ajouter une lettre minuscule avant le nom de la propriété pour indiquer qu'il s'agit d'une propriété privée et qu'elle n'est pas directement accessible au monde extérieur.

  1. Définition de la méthode de classe

En langage Go, les méthodes de classe sont implémentées en utilisant la structure comme récepteur de la méthode. Par exemple :

func (p Person) SayHello() {
    fmt.Printf("Hello, my name is %s, I am %d years old.\n", p.Name, p.Age)
}

Le code ci-dessus définit une méthode SayHello, qui appartient à la classe Person. La variable p en tant que récepteur est équivalente au mot-clé this en Java ou C#. Cela signifie que l'objet Person p est utilisé pour appeler le. Méthode SayHello. Dans la méthode, nous pouvons accéder aux propriétés de la classe et effectuer certaines opérations, telles que l'impression de la sortie, etc.

  1. Instantiation d'une classe

Dans le langage Go, pour instancier une classe, il faut utiliser le constructeur de la classe pour créer une instance. Par exemple :

func NewPerson(name string, age int) *Person {
    return &Person{
        Name: name,
        Age:  age,
    }
}

func main() {
    person := NewPerson("John", 30)
    person.SayHello()
}

Dans le code ci-dessus, nous avons défini le constructeur NewPerson, qui reçoit deux paramètres name et age, et renvoie un pointeur vers la classe Person. Dans la fonction principale, nous appelons la fonction NewPerson pour créer un objet personne et appelons sa méthode SayHello.

  1. Héritage des classes

Dans la programmation orientée objet traditionnelle, l'héritage est une fonctionnalité très importante. Dans le langage Go, l'héritage de classe est implémenté via une imbrication anonyme. Par exemple :

type Student struct {
    Person
    Grade int
}
func (s Student) Study() {
    fmt.Println("I am studying.")
}

Le code ci-dessus définit une classe Student, qui hérite de la classe Person, et ajoute un attribut Grade et une méthode Study. Dans la classe Student, la classe Person est imbriquée dans la classe Student, afin que vous puissiez accéder directement aux propriétés et méthodes de la classe Person. Dans une relation d'héritage, si deux classes ont des méthodes ou des propriétés portant le même nom, la classe héritée en dernier lieu écrasera la classe précédente.

  1. Interface et polymorphisme

En programmation orientée objet, l'interface et le polymorphisme sont des concepts très importants. Dans le langage Go, le polymorphisme peut être obtenu via l'interface. Le polymorphisme peut être obtenu en définissant une interface et en laissant la classe implémenter cette interface. Par exemple :

type Animal interface {
    Talk()
}
type Cat struct {
}
func (c Cat) Talk() {
    fmt.Println("喵喵喵")
}
type Dog struct {
}
func (d Dog) Talk() {
    fmt.Println("汪汪汪")
}
func main() {
    var animal Animal
    animal = new(Cat)
    animal.Talk()
    animal = new(Dog)
    animal.Talk()
}

Dans le code ci-dessus, nous définissons une interface Animal, qui possède une méthode Talk. Les classes Cat et Dog implémentent cette interface Animal et remplacent respectivement la méthode Talk pour implémenter leurs propres comportements spécifiques. Dans la fonction principale, nous obtenons le polymorphisme en créant une variable de type interface Animal, c'est-à-dire que cette variable peut pointer vers Chat ou Chien, mais leurs comportements spécifiques sont différents.

Résumé :

Cet article présente comment utiliser les classes pour implémenter la programmation orientée objet dans le langage Go. Bien que le langage Go ne prenne pas directement en charge les classes, nous pouvons toujours implémenter les fonctions des classes grâce à la combinaison de structures et de méthodes. Dans le langage Go, l'héritage de classe est implémenté via une imbrication anonyme et le polymorphisme est implémenté via l'interface d'interface. Comparé aux langages orientés objet traditionnels, le langage Go a une syntaxe plus concise, mais il peut toujours implémenter les caractéristiques de la programmation orientée objet. Pour bien apprendre la programmation orientée objet en langage Go, il est essentiel de comprendre la combinaison de la structure struct et de la méthode méthode.

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