Dans Golang, une interface (Interface) est un type qui définit l'ensemble de méthodes qu'un objet doit avoir. L'utilisation d'interfaces nous permet de décrire des objets de manière abstraite sans nous soucier de l'implémentation spécifique de l'objet.
Le format de déclaration de l'interface est le suivant :
type interface name interface {
方法1(参数1 类型1, 参数2 类型2, ...) (返回值1 类型1, 返回值2 类型2, ...) 方法2(参数1 类型1, 参数2 类型2, ...) (返回值1 类型1, 返回值2 类型2, ...) ...
}
où le nom de l'interface peut être n'importe quel identifiant légal ; la méthode peut avoir zéro ou plusieurs paramètres et zéro ou plusieurs valeurs de retour, et les types de paramètres et de valeurs de retour peuvent être de n'importe quel type, y compris les types d'interface.
Voici un exemple simple qui montre comment définir une interface et l'utiliser pour décrire deux types différents :
package main
import "fmt"
// Définir l'interface
type Shape interface {
Area() float64
}
// Définir la structure Circle
type Circle struct {
X, Y, Radius float64
}
// Définir la méthode Area() pour implémenter l'interface Shape
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
/ / Définir la structure Rectangle
type Rectangle struct {
X1, Y1, X2, Y2 float64
}
// Définir la méthode Area() pour implémenter l'interface Shape
func (r Rectangle) Area() float64 {
return (r.X2 - r.X1) * (r.Y2 - r.Y1)
}
// Définir la fonction GetArea , il accepte un paramètre de type Shape et appelle sa méthode Area()
func GetArea(shape Shape) float64 {
return shape.Area()
}
func main() {
// 创建一个 Circle 对象并计算它的面积 c := Circle{0, 0, 5} fmt.Println(GetArea(c)) // 输出:78.5 // 创建一个 Rectangle 对象并计算它的面积 r := Rectangle{0, 0, 10, 10} fmt.Println(GetArea(r)) // 输出:100 // 注意:Circle 和 Rectangle 类型都实现了 Shape 接口,因此可以作为参数传递给 GetArea 函数
}
Dans l'exemple ci-dessus, nous Une interface nommée La forme est définie et deux types différents, Cercle et Rectangle, sont définis, qui implémentent tous deux la méthode Area() de l'interface Shape. Nous définissons également une fonction appelée GetArea qui accepte un paramètre de type Shape et appelle sa méthode Area() pour calculer l'aire.
Dans la fonction principale, nous avons créé respectivement un objet Circle et un objet Rectangle, et les avons transmis à la fonction GetArea pour calculer leurs aires. Étant donné que les types Circle et Rectangle implémentent l’interface Shape, ils peuvent tous deux être transmis en tant que paramètres à la fonction GetArea pour calculer la surface.
En bref, l'interface est un concept très important dans Golang. Elle nous permet de décrire des objets de manière abstraite sans se soucier de l'implémentation spécifique de l'objet. En maîtrisant l’utilisation des interfaces, nous pouvons mieux concevoir et écrire du code Golang.
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!