Golang では、インターフェイス (Interface) は、オブジェクトに必要なメソッドのセットを定義する型です。インターフェイスを使用すると、オブジェクトの具体的な実装を気にすることなく、抽象的な方法でオブジェクトを記述することができます。
インターフェースの宣言形式は以下のとおりです。
type インターフェース名interface {
方法1(参数1 类型1, 参数2 类型2, ...) (返回值1 类型1, 返回值2 类型2, ...) 方法2(参数1 类型1, 参数2 类型2, ...) (返回值1 类型1, 返回值2 类型2, ...) ...
}
このうちインターフェース名は任意です。法的識別子; メソッド 0 個以上のパラメータと 0 個以上の戻り値を持つことができ、パラメータと戻り値の型はインターフェイスの型を含む任意の型にすることができます。
次の簡単な例は、インターフェイスを定義し、それを使用して 2 つの異なるタイプを記述する方法を示しています。
package main
import "fmt"
// インターフェイスを定義します
type Shape インターフェイス {
Area() float64
}
// 構造体を定義します Circle
type Circle struct {
X, Y, Radius float64
}
// Shape インターフェイスを実装するメソッド Area() を定義します
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
// 構造体を定義しますRectangle
type Rectangle struct {
X1, Y1, X2, Y2 float64
}
// Shape インターフェイスを実装するメソッド Area() を定義します
func (r Rectangle) Area() float64 {
return (r.X2 - r.X1) * (r.Y2 - r.Y1)
}
// 関数 GetArea を定義します。この関数は Shape タイプのパラメーターを受け取り、その Area() メソッドを呼び出します。
func GetArea(shape Shape) float64 {
return shape.Area()
}
func main() {
// 创建一个 Circle 对象并计算它的面积 c := Circle{0, 0, 5} fmt.Println(GetArea(c)) // 输出:78.5 // 创建一个 Rectangle 对象并计算它的面积 r := Rectangle{0, 0, 10, 10} fmt.Println(GetArea(r)) // 输出:100 // 注意:Circle 和 Rectangle 类型都实现了 Shape 接口,因此可以作为参数传递给 GetArea 函数
}
上記の例では、Shape という名前のインターフェイスを定義し、2 つの異なる Type Circle と Rectangle を定義しました。これらはすべて、 Shape インターフェイスの Area() メソッド。また、Shape 型のパラメーターを受け取り、その Area() メソッドを呼び出して面積を計算する GetArea という関数も定義します。
main 関数では、Circle オブジェクトと Rectangle オブジェクトをそれぞれ作成し、それらを GetArea 関数に渡して面積を計算しました。 Circle 型と Rectangle 型はどちらも Shape インターフェイスを実装しているため、どちらもパラメータとして GetArea 関数に渡して面積を計算できます。
つまり、インターフェースは Golang において非常に重要な概念であり、これにより、オブジェクトの具体的な実装を気にすることなく、抽象的な方法でオブジェクトを記述することができます。インターフェイスの使用をマスターすることで、Golang コードをより適切に設計して作成できるようになります。
以上がgolangインターフェースの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。