Le langage Go ne prend pas en charge la surcharge de fonctions, mais le polymorphisme est obtenu via les interfaces. Une interface définit les méthodes qu'un type qui implémente l'interface doit implémenter, permettant au même type d'interface d'être utilisé pour représenter différents types d'objets et implémenter différents comportements.
Surcharge de fonctions et polymorphisme en langage Go
Surcharge de fonctions
La surcharge de fonctions permet la création de plusieurs fonctions portant le même nom dans la même portée, mais la liste des paramètres de la fonction (type de paramètre, quantité et commande) sont différents. Le langage Go ne prend pas en charge la surcharge de fonctions au sens traditionnel.
Polymorphisme
Le polymorphisme permet d'utiliser le même type d'interface pour représenter différents types d'objets, obtenant ainsi des comportements différents. Le langage Go implémente le polymorphisme via des interfaces. Une interface définit un ensemble de méthodes qu'un type qui implémente l'interface doit implémenter.
Cas pratique
Voici un exemple d'utilisation d'interfaces pour réaliser le polymorphisme :
// Shape 接口定义了形状的基本操作 type Shape interface { Area() float64 Perimeter() float64 } // Circle 结构体实现了 Shape 接口 type Circle struct { Radius float64 } func (c Circle) Area() float64 { return math.Pi * c.Radius * c.Radius } func (c Circle) Perimeter() float64 { return 2 * math.Pi * c.Radius } // Square 结构体实现了 Shape 接口 type Square struct { Side float64 } func (s Square) Area() float64 { return s.Side * s.Side } func (s Square) Perimeter() float64 { return 4 * s.Side } // 计算不同形状的面积和周长 func CalculateShape(s Shape) { fmt.Println("面积:", s.Area()) fmt.Println("周长:", s.Perimeter()) } func main() { circle := Circle{Radius: 5.0} square := Square{Side: 3.0} // 使用相同的 CalculateShape 函数计算不同形状的面积和周长 CalculateShape(circle) CalculateShape(square) }
Dans cet exemple, Shape
接口定义了 Area
和 Perimeter
方法,Circle
和 Square
结构体实现了该接口。CalculateShape
函数接收一个 Shape
prend les paramètres du type d'interface et calcule son aire et son périmètre, réalisant ainsi le polymorphisme.
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!