Maison  >  Article  >  développement back-end  >  Comment implémenter l'interface dans Golang

Comment implémenter l'interface dans Golang

PHPz
PHPzoriginal
2023-04-27 09:11:25648parcourir

Ces dernières années, Golang (langage Go) est devenu de plus en plus populaire parmi les développeurs et est devenu le langage de développement de choix pour de nombreuses sociétés Internet. Golang fournit un mécanisme de langage de programmation simple et efficace et prend en charge le concept d'interface. Dans Golang, l'interface est un concept très important, et c'est aussi une partie que les développeurs doivent maîtriser.

Cet article décrira "l'interface" de Golang sous les aspects suivants, y compris les points de connaissances tels que la définition et la mise en œuvre des interfaces, l'imbrication des interfaces, la combinaison d'interfaces et les types personnalisés pour implémenter les interfaces.

Définition de l'interface

Il est très simple de définir une interface, il suffit d'utiliser le mot clé interface, par exemple : interface 关键字即可,例如:

type Animal interface {
    Eat()
    Sleep()
}

上述代码中定义了一个 Animal 的接口,该接口有 Eat()Sleep() 两个方法。

接口的实现

接口的实现相当于是一个类实现了一个接口中的所有方法。在 Golang 中,一个类只需要实现了接口中声明的所有方法,就可以被认为是该接口的实现。例如:

type Cat struct {
    Name string
}

func (c Cat) Eat() {
    fmt.Printf("%s is eating.\n", c.Name)
}

func (c Cat) Sleep() {
    fmt.Printf("%s is sleeping.\n", c.Name)
}

上述代码中,定义了一个 Cat 的类,并实现了 Animal 接口中的所有方法。如果你现在创建了一个 Cat 的实例,然后把它当作 Animal 来用,那么它就可以正常工作了。例如:

var animal Animal
animal = Cat{"Tom"}
animal.Eat()
animal.Sleep()

上述代码中,把一个 Cat 结构体的实例,赋值给了 Animal,然后通过调用 Eat()Sleep() 方法来实现接口。

接口嵌套

在 Golang 中,接口可以嵌套在其他接口中,例如:

type Cat interface {
    Eat()
    Sleep()
}

type Animal interface {
    Cat
    Run()
}

上述代码中,Animal 接口嵌套了 Cat 接口。这表示,Animal 接口现在有 Eat()Sleep() 方法,也有 Run() 方法。

接口组合

当我们需要使用多个接口时,可以通过接口组合来实现。例如:

type Bird interface {
    Fly()
    Swim()
}

type Animal interface {
    Eat()
    Sleep()
}

type Creature interface {
    Animal
    Bird
}

上述代码中,定义了三个接口:BirdAnimalCreature。其中,Creature 组合了 AnimalBird 两个接口。由于 Creature 接口继承了 AnimalBird 两个接口,所以它也具备了这两个接口的所有方法。

自定义类型实现接口

在 Golang 中,除了结构体可以实现接口,自定义类型也可以实现接口。例如:

type MyInt int

func (m MyInt) Eat() {
    fmt.Println("Eating", m)
}

func (m MyInt) Sleep() {
    fmt.Println("Sleeping", m)
}

上述代码中,定义了一个 MyInt 类型,并且实现了 Animal 接口中的 Eat()Sleep() 方法。如果你现在创建了一个 MyInt 的实例,然后把它当作 Animal

var animal Animal
animal = MyInt(10)
animal.Eat()
animal.Sleep()
Le code ci-dessus définit une interface de Animal , Cette interface a deux méthodes : Eat() et Sleep().

Implémentation d'interface 🎜🎜 L'implémentation d'interface équivaut à une classe implémentant toutes les méthodes d'une interface. En Golang, une classe n'a besoin que d'implémenter toutes les méthodes déclarées dans l'interface pour être considérée comme une implémentation de l'interface. Par exemple : 🎜rrreee🎜Dans le code ci-dessus, une classe Cat est définie et toutes les méthodes de l'interface Animal sont implémentées. Si vous créez maintenant une instance de Cat et l'utilisez comme Animal, cela fonctionnera correctement. Par exemple : 🎜rrreee🎜Dans le code ci-dessus, une instance de la structure Cat est affectée à Animal, puis en appelant Eat() et la méthode Sleep() pour implémenter l'interface. 🎜🎜Imbrication d'interface🎜🎜Dans Golang, les interfaces peuvent être imbriquées dans d'autres interfaces, par exemple : 🎜rrreee🎜Dans le code ci-dessus, l'interface Animal imbrique l'interface Cat . Cela signifie que l'interface Animal possède désormais les méthodes Eat() et Sleep(), ainsi qu'un Run() code> méthode. 🎜🎜Combinaison d'interfaces🎜🎜Lorsque nous devons utiliser plusieurs interfaces, nous pouvons le faire grâce à une combinaison d'interfaces. Par exemple : 🎜rrreee🎜Dans le code ci-dessus, trois interfaces sont définies : <code>Oiseau, Animal et Créature. Parmi elles, Creature combine les deux interfaces Animal et Bird. Puisque l'interface Creature hérite des deux interfaces Animal et Bird, elle possède également toutes les méthodes de ces deux interfaces. 🎜🎜Les types personnalisés implémentent des interfaces🎜🎜Dans Golang, en plus des structures pouvant implémenter des interfaces, les types personnalisés peuvent également implémenter des interfaces. Par exemple : 🎜rrreee🎜Dans le code ci-dessus, un type MyInt est défini et les Eat() et dans l'interface <code>Animal sont implémentés dans la méthode Sleep(). Si vous créez une instance de MyInt maintenant et l'utilisez comme Animal, elle fonctionnera également normalement : 🎜rrreee🎜Jusqu'à présent, nous avons parlé des points de connaissance Golang tels que le définition, implémentation, imbrication et combinaison d'interfaces, ainsi que des types personnalisés pour implémenter des interfaces. En tant que concept de programmation important, l'interface est également très importante dans Golang. Maîtriser les connaissances sur les interfaces peut nous aider à mieux utiliser le langage de programmation Golang pour développer des applications. 🎜

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