ゼロから始める: Golang インターフェースの作成と実装
Golang では、インターフェースは動作を定義する型です。インターフェイスは、これらのメソッドの特定の実装を提供せずに、一連のメソッドを定義します。インターフェイスは、ポリモーフィズムを実現できる抽象型であり、プログラムをより柔軟で拡張可能にします。この記事では、Golang でインターフェイスを作成し、インターフェイスの特定のメソッドを実装する方法を紹介し、読者の理解を助けるコード例を示します。
Golang では、キーワード type
と interface
を使用してインターフェイスを定義します。インターフェイスには任意の数のメソッドを含めることができ、各メソッドはメソッド名、パラメータ リスト、および戻り値リストで構成されます。以下は、単純なインターフェイス定義の例です。
package main import "fmt" // 定义一个接口 type Shape interface { Area() float64 Perimeter() float64 }
上記の例では、Shape
という名前のインターフェイスを定義します。これには、2 つのメソッド Area()
と ## が含まれています。 #Perimeter() は、形状の面積と周囲長をそれぞれ計算するために使用されます。
Shape インターフェイスの実装例です。
package main import "fmt" // 定义一个矩形类型 type Rectangle struct { Width float64 Height float64 } // 实现Shape接口的Area方法 func (r Rectangle) Area() float64 { return r.Width * r.Height } // 实现Shape接口的Perimeter方法 func (r Rectangle) Perimeter() float64 { return 2*r.Width + 2*r.Height } func main() { r := Rectangle{Width: 5, Height: 3} fmt.Println("矩形的面积:", r.Area()) fmt.Println("矩形的周长:", r.Perimeter()) }
Rectangle 型を定義し、
Shape# を実装します。インターフェイスの #Area()
メソッドと Perimeter()
メソッド。 main
関数では、Rectangle
オブジェクト r
を作成し、それが実装するインターフェイス メソッドを呼び出します。 3. ポリモーフィズム
package main import "fmt" // 定义一个圆形类型 type Circle struct { Radius float64 } // 实现Shape接口的Area方法 func (c Circle) Area() float64 { return 3.14 * c.Radius * c.Radius } // 实现Shape接口的Perimeter方法 func (c Circle) Perimeter() float64 { return 2 * 3.14 * c.Radius } func main() { r := Rectangle{Width: 5, Height: 3} c := Circle{Radius: 2} shapes := []Shape{r, c} for _, shape := range shapes { fmt.Println("面积:", shape.Area()) fmt.Println("周长:", shape.Perimeter()) } }
上記の例では、
Circle 型を定義し、Shape
インターフェイス #Area() を実装します。
Perimeter() メソッド。
main 関数では、
Rectangle オブジェクト
r と
Circle オブジェクト
c を作成し、それらを追加します。それを
[]Shape タイプのスライスに変換します。次に、スライスを走査して
Shape インターフェイスのメソッドを呼び出すことにより、ポリモーフィズムの効果が実現されます。
上記の例を通じて、読者は Golang でインターフェイスを作成する方法と、インターフェイスを実装するための具体的な方法をよりよく理解できます。インターフェイスは Golang の重要な機能であり、よりモジュール化された、柔軟で拡張可能なコードを作成するのに役立ちます。この記事が読者にとって役立つことを願っています。
以上がゼロから始める: Golang インターフェースの作成と実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。