ホームページ >バックエンド開発 >Golang >golang メソッドの型定義

golang メソッドの型定義

WBOY
WBOYオリジナル
2023-05-15 11:07:07621ブラウズ

Golang は、オブジェクト指向プログラミング (OOP) をサポートする非常に強力なプログラミング言語です。 Golang では、オブジェクト指向プログラミングでのカプセル化、継承、ポリモーフィズムなどの機能を実装するメソッドを使用できます。メソッドは、他のプログラミング言語のメンバー メソッド (メンバー関数) やインスタンス メソッド (インスタンス メソッド) と同様に、特定の型に関連付けられた関数を指します。この関数は型を通じて呼び出すことができます。

Golang のメソッドは構造体 (Struct) または型 (Type) で定義され、構造体または型自体と密接に関連しています。メソッドを通じて動作をデータと関連付けることができるため、コードがより読みやすく簡潔になります。

Golang のメソッド型定義には主に次のものがあります:

  1. 値型メソッド (Value Method)
    値型メソッドは、特定の型に関連付けられた関数を指します。このタイプの値。メソッド内でレシーバーを変更しても、元の値には影響しません。

たとえば、値型メソッドの定義は次のとおりです。

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())
  1. ポインタ型メソッド (Pointer Method)
    ポインタ型メソッドは、特定の A 関数を参照します。レシーバがその型のポインタである型に関連付けられています。ポインターは元の値を指しているため、メソッド内のレシーバーを変更すると元の値に影響します。

たとえば、ポインタ型メソッドの定義は次のとおりです。

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)
  1. 埋め込み型メソッド
    埋め込み型メソッドは、Make one type a を参照します。別の型のフィールドを使用し、その型のメソッドをメソッド内で直接使用します。埋め込み型メソッドは実際には Go 言語に固有のメソッド型定義であり、他の言語の継承型や混合型に相当します。

たとえば、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。