ホームページ > バックエンド開発 > Golang > Go でメソッド式を使用するとメソッドを引数として渡すことができるようになりますか?

Go でメソッド式を使用するとメソッドを引数として渡すことができるようになりますか?

Patricia Arquette
リリース: 2024-11-27 11:26:13
オリジナル
684 人が閲覧しました

How Do Method Expressions Enable Passing Methods as Arguments in Go?

Go のメソッド式

Go のメソッド式を使用すると、カスタム オブジェクトを最初の引数としてメソッドを呼び出すことができます。これは、特定のアクションを関数に渡す必要がある場合に役立ちます。

コード スニペットを理解する

次の Go コードを考えてみましょう:

func main() {
    dog := Dog{}
    b := (*Dog).Bark // method expression
    b(&dog, 5)
}

type Dog struct {}

func (d *Dog) Bark(n int) {
    for i := 0; i < n; i++ {
        fmt.Println("Bark")
    }
}
ログイン後にコピー

この例では、メソッド式を使用して関数を変数 b に割り当てます。メソッド式 (*Dog).Bark は、Dog 型の Bark メソッドをポインター レシーバー (*Dog) に関連付けます。

b が呼び出されると、最初の引数として Dog オブジェクトを使用して Bark メソッドが呼び出されます。 2 番目の引数として 5 を指定します。このメソッドは、「Bark」をコンソールに 5 回出力します。

メソッド式の利点

  • メソッド式を使用すると、特定のアクションを関数に渡すことができます。コンパイル時にオブジェクトが不明な場合。
  • これらは、他の高次関数で使用できるカスタム関数タイプを作成する方法を提供します。関数。

使用例

メソッド式はさまざまな状況で使用できます。たとえば、メソッド式とオブジェクトを受け取り、そのメソッドに基づいてアクションを実行するヘルパー関数を定義できます。

func DoAction(f func(*Dog, int), d *Dog, n int) {
    f(d, n)
}

...

func main() {
    var b func(*Dog, int)
    if (shouldBark) {
        b = (*Dog).Bark
    } else {
        b = (*Dog).Sit
    }
    d := Dog{}
    DoAction(b, &d, 3)
}
ログイン後にコピー

以上がGo でメソッド式を使用するとメソッドを引数として渡すことができるようになりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート