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.
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 }
上述代码中,定义了三个接口:Bird
、Animal
和 Creature
。其中,Creature
组合了 Animal
和 Bird
两个接口。由于 Creature
接口继承了 Animal
和 Bird
两个接口,所以它也具备了这两个接口的所有方法。
在 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()
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!