In der Go-Sprache können Funktionen als Schnittstellenwerte gespeichert werden, wodurch Polymorphismus erreicht wird: Definieren Sie eine Schnittstelle und geben Sie einen Satz von Methodensignaturen an. Erstellen Sie einen Typ, der die Schnittstelle implementiert und diese Methoden dafür implementiert. Definieren Sie eine Funktion, die Schnittstellenwerte als Eingabe akzeptiert. Methoden, die unabhängig vom tatsächlichen Typ nur den Schnittstellenwert in der Funktion verwenden. Rufen Sie Funktionen mit Werten unterschiedlichen Typs auf, um Polymorphismus zu erreichen.
In der Go-Sprache können Funktionen als Schnittstellenwerte gespeichert werden, wodurch wir Polymorphismus erreichen können, obwohl die Go-Sprache selbst nicht objektorientiert ist.
Eine Schnittstelle definiert die Signaturen einer Reihe von Methoden, die von Typen implementiert werden müssen, die die Schnittstelle implementieren. Zum Beispiel definieren wir eine Shape
-Schnittstelle: 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
-Schnittstelle wie folgt implementiert: 🎜rrreee🎜Verwenden Sie Funktionen als Schnittstellenwerte🎜🎜Da wir nun eine Shape
-Schnittstelle erstellt haben, können wir Funktionen als Werte verwenden. Dazu definieren wir eine calculateArea
-Funktion, die einen Shape
-Schnittstellenwert als Eingabe akzeptiert. 🎜rrreee🎜Praktischer Fall🎜🎜Lassen Sie uns nun ein Beispiel erstellen, um zu demonstrieren, wie Polymorphismus implementiert wird. 🎜rrreee🎜Ausgabe: 🎜rrreee🎜In diesem Beispiel verwendet die Funktion calculateArea
nur die Methode Area
der übergebenen Schnittstelle Shape
, unabhängig davon Der tatsächliche Typ ist Rectangle
oder Circle
. Dies ist die Verkörperung des Polymorphismus. 🎜Das obige ist der detaillierte Inhalt vonImplementierung des Polymorphismus von Golang-Funktionen in der objektorientierten Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!