Go のメソッド式を理解する: ディープダイブ
Go では、メソッド式は通常の関数のように呼び出すことができる関数ですただし、最初のパラメータとして受信者オブジェクトが追加されています。これにより、メソッドが特定のオブジェクトに作用できるようになります。
次のコード スニペットを考えてみましょう:
package main import "fmt" // Define a Dog type type Dog struct{} // Define a Bark method for Dog func (d *Dog) Bark(n int) { for i := 0; i < n; i++ { fmt.Println("Bark") } } func main() { // Create a Dog instance dog := Dog{} // Use a method expression to access the Bark method b := (*Dog).Bark // Invoke the Bark method with the dog instance b(&dog, 5) }
この例では、メソッド式 (*Dog).Bark は、次の値を受け入れる関数を作成します。最初のパラメータとして Dog オブジェクトへの参照 (*Dog)。メソッド式を変数 (b) に割り当て、それを特定の Dog インスタンス (&dog) で呼び出すことができます。これにより、b(&dog, 5) 呼び出しが実行され、この場合、「Bark」が 5 回出力されます。
メソッド式は、関数を引数として別の関数に渡したい場合に便利です。たとえば、ヘルパー関数内でメソッド式を使用するようにコードを変更してみましょう。
func DoAction(f func(*Dog, int), d *Dog, n int) { f(d, n) }
このヘルパー関数では、条件に基づいて実行するメソッドを動的に選択できます。たとえば、(*Dog).Bark を使用して吠えるアクションを実行したり、(*Dog).Sit を使用して座ったアクションを実行したりできます。
全体として、メソッド式は、メソッドにアクセスして関数として渡すための便利な方法を提供します。囲碁で。これらは特定の状況では役立ちますが、使用する前に言語の基本をよく理解することが不可欠です。
以上がGo ではメソッド式はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。