Golang は、オブジェクト指向プログラミング (OOP) をサポートする非常に強力なプログラミング言語です。 Golang では、オブジェクト指向プログラミングでのカプセル化、継承、ポリモーフィズムなどの機能を実装するメソッドを使用できます。メソッドは、他のプログラミング言語のメンバー メソッド (メンバー関数) やインスタンス メソッド (インスタンス メソッド) と同様に、特定の型に関連付けられた関数を指します。この関数は型を通じて呼び出すことができます。
Golang のメソッドは構造体 (Struct) または型 (Type) で定義され、構造体または型自体と密接に関連しています。メソッドを通じて動作をデータと関連付けることができるため、コードがより読みやすく簡潔になります。
Golang のメソッド型定義には主に次のものがあります:
たとえば、値型メソッドの定義は次のとおりです。
type Rectangle struct { width, height float64 } func (r Rectangle) area() float64 { return r.width * r.height }
この例では、Rectangle 構造体と area メソッドという名前の値型を定義します。このメソッドのレシーバーは Rectangle 型の値 (r Rectangle) で、float64 型の領域を返します。
このメソッドを呼び出すときは、Rectangle 型の値を通じて呼び出すことができます。
rect := Rectangle{width: 10, height: 5} fmt.Println(rect.area())
たとえば、ポインタ型メソッドの定義は次のとおりです。
type Rectangle struct { width, height float64 } func (r *Rectangle) scale(factor float64) { r.width = r.width * factor r.height = r.height * factor }
この例では、Rectangle 構造体と、scale メソッドという名前のポインタ型を定義します。このメソッドの受信側は Rectangle (r *Rectangle) 型のポインターであり、戻り値はありません。メソッド内で、構造の幅と高さの両方のプロパティに係数を乗算します。
このメソッドを呼び出すときは、Rectangle 型へのポインターを介して呼び出す必要があります。
rect := &Rectangle{width: 10, height: 5} rect.scale(2) fmt.Println(rect.width, rect.height)
たとえば、Animal タイプを定義してから Cat タイプを定義し、Cat タイプの埋め込みフィールドとして Animal タイプを使用できます。このように、猫タイプは動物タイプのメソッドをそのまま使用することができます。
type Animal struct { name string } func (a *Animal) move() { fmt.Println(a.name, "is moving") } type Cat struct { *Animal } func main() { cat := &Cat { Animal: &Animal { name: "Tom", }, } cat.move() }
この例では、Animal タイプと Cat タイプを定義し、Animal タイプを Cat タイプに匿名フィールドとして埋め込みます。このように、猫タイプは動物タイプのメソッドをそのまま使用することができます。
このメソッドを呼び出す場合、Cat 型の move メソッドを直接呼び出すことができます。 Cat タイプには Animal タイプが埋め込まれているため、移動メソッドは実際にはそのタイプのメソッドになります。
概要:
Golang は、値型メソッド、ポインタ型メソッド、埋め込み型メソッドなど、複数のメソッド型定義をサポートしています。さまざまなタイプのメソッドを定義することで、さまざまなプログラミングのニーズを満たし、Golang プログラミングにさらなる柔軟性と利便性をもたらすことができます。
以上がgolang メソッドの型定義の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。