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