En langage Go, les fonctions peuvent être stockées sous forme de valeurs d'interface, réalisant ainsi un polymorphisme : définir une interface et spécifier un ensemble de signatures de méthode. Créez un type qui implémente l'interface et implémente ces méthodes pour celle-ci. Définissez une fonction qui accepte les valeurs d'interface en entrée. Méthodes qui utilisent uniquement la valeur d'interface dans la fonction, quel que soit le type réel. Appelez des fonctions avec des valeurs de différents types pour obtenir le polymorphisme.
Dans le langage Go, les fonctions peuvent être stockées sous forme de valeurs d'interface, ce qui nous permet d'obtenir un polymorphisme même si le langage Go lui-même n'est pas orienté objet.
Une interface définit les signatures d'un ensemble de méthodes qui doivent être implémentées par les types qui implémentent l'interface. Par exemple, nous définissons une interface Shape
: Shape
接口:
type Shape interface { Area() float64 }
我们可以创建实现 Shape
接口的类型,如下所示:
type Rectangle struct { width, height float64 } func (r Rectangle) Area() float64 { return r.width * r.height } type Circle struct { radius float64 } func (c Circle) Area() float64 { return math.Pi * c.radius * c.radius }
现在,我们创建了一个 Shape
接口,我们可以使用函数作为其值。为此,我们定义一个 calculateArea
函数,它接受一个 Shape
接口值作为输入。
func calculateArea(s Shape) float64 { return s.Area() }
现在,让我们创建一个实例来演示多态性是如何实现的。
func main() { // 创建一个 Rectangle 和一个 Circle r := Rectangle{width: 2, height: 3} c := Circle{radius: 5} // 使用函数计算他们的面积 areaR := calculateArea(r) areaC := calculateArea(c) fmt.Println("Rectangle area:", areaR) fmt.Println("Circle area:", areaC) }
输出:
Rectangle area: 6 Circle area: 78.53981633974483
在这个例子中,calculateArea
函数只使用传入的 Shape
接口的 Area
方法,无论实际类型是 Rectangle
还是 Circle
rrreee
Shape
comme suit : 🎜rrreee🎜Utiliser les fonctions comme valeurs d'interfaces🎜🎜Maintenant que nous avons créé une interface Forme
, nous pouvons utiliser des fonctions comme valeurs. Pour ce faire, nous définissons une fonction calculateArea
qui accepte une valeur d'interface Shape
en entrée. 🎜rrreee🎜Cas pratique🎜🎜Maintenant, créons un exemple pour démontrer comment le polymorphisme est implémenté. 🎜rrreee🎜Sortie : 🎜rrreee🎜Dans cet exemple, la fonction calculateArea
utilise uniquement la méthode Area
de l'interface Shape
transmise, quel que soit le type réel Est-ce Rectangle
ou Cercle
. C'est l'incarnation du 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!