Go では、関数は特定の型に関連付けられずにインターフェイスを実装できます。インターフェイスはメソッドのセットを定義し、型としての関数はこれらのメソッドを満たす場合にインターフェイスを実装します。関数を介してインターフェイスを実装すると、呼び出し元のコードを変更せずにさまざまな実装を簡単に交換できるため、コードの保守性と拡張性が向上します。
Go 言語でのインターフェイスとしての関数の実装
Go 言語では、インターフェイスはメソッドのセットを定義する型です。 。インターフェイスで宣言されたメソッドを満たす任意の型がインターフェイスを実装できます。関数は型でもあるため、関数はインターフェイスを実装することもできます。
インターフェイス定義
最初に、Area()
メソッドを持つインターフェイス Shape
を定義します。
type Shape interface { Area() float64 }
関数の実装
Shape
インターフェイスを実装する関数 Circle
を定義します。
これで、
Circle 関数を使用して Shape
型変数を作成できます: <pre class='brush:go;toolbar:false;'>func Circle(radius float64) Shape {
return &circle{radius: radius}
}
type circle struct {
radius float64
}
func (c *circle) Area() float64 {
return math.Pi * c.radius * c.radius
}</pre>
関数をインターフェイスとして実装する利点は、コードの保守性とスケーラビリティを向上できることです。関数の実装をインターフェイスから分離することで、関数を呼び出すコードを変更することなく、異なる実装を簡単に交換できます。
注:インターフェイス実装としての関数はメソッド レシーバーとは異なることに注意してください。メソッド レシーバーはメソッドを特定の型に関連付けますが、インターフェイスの実装としての関数は特定の型に関連付けられません。
以上がオブジェクト指向プログラミングにおける golang 関数のインターフェース実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。