Go 言語は関数のオーバーロードをサポートしていませんが、ポリモーフィズムはインターフェイスを通じて実現されます。インターフェイスは、インターフェイスを実装する型が実装する必要があるメソッドを定義します。これにより、同じインターフェイス型を使用して、異なる種類のオブジェクトを表し、異なる動作を実装できるようになります。
#Go 言語における関数のオーバーロードとポリモーフィズム
関数のオーバーロード#関数のオーバーロード同じスコープ内で同じ名前の複数の関数を作成できますが、関数のパラメーター リスト (パラメーターの種類、番号、順序) は異なります。 Go 言語は、従来の意味での関数のオーバーロードをサポートしていません。
ポリモーフィズムポリモーフィズムを使用すると、同じインターフェイス タイプを使用して異なるタイプのオブジェクトを表すことができるため、異なる動作を実現できます。 Go 言語はインターフェイスを通じてポリモーフィズムを実装します。インターフェイスは、インターフェイスを実装する型が実装する必要があるメソッドのセットを定義します。
実践的なケース次に、インターフェースを使用してポリモーフィズムを実装する例を示します:
// 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) }
この例では、
Shapeこのインターフェイスは Area
メソッドと Perimeter
メソッドを定義し、Circle
と Square
構造体がインターフェイスを実装します。 CalculateShape
関数は、Shape
インターフェイス タイプのパラメーターを受け取り、その面積と周囲長を計算することで、多態性を実現します。
以上がGolang 関数のオーバーロードとポリモーフィズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。