Go メソッドのレシーバーとパラメーター
Go では、メソッドを操作するときにレシーバーとパラメーターの概念を理解することが重要です。
メソッドのシグネチャには、メソッドのレシーバーとして宣言されたパラメーターが含まれることがよくあります。このレシーバーは、その名前に反して、パラメーターの特殊なケースです。
レシーバーとは何ですか?
レシーバーは、メソッドを関連付けることができる構文機能です。特定のタイプ。与えられた例では:
func (p *Page) save() error
p *Page はレシーバーであり、save メソッドが *Page タイプにアタッチされていることを示します。
レシーバーとパラメーターの違い
レシーバーは、メソッドに明示的に渡す必要がないという意味で、従来のパラメーターではありません。代わりに、受信側は呼び出し元によって自動的に提供されます。
たとえば、save メソッドを呼び出すには、次のように記述します。
p := &Page{"My Page", "This is my page"} p.save()
この場合、p *Page 変数はsave メソッドのレシーバー。
Syntactic Sugar
レシーバーの使用は単なる構文糖です。これにより、便利な方法でメソッドを型に接続できるようになります。ただし、レシーバを通常のパラメータとして宣言することで同じ結果を得ることができます。
func save(p *Page) error
どちらの宣言も同等であり、同じ結果が生成されます。
詳細については、を参照してください。追加の説明に対する回答を提供しました。
以上がGo メソッドのレシーバーとパラメーター: 本当の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。