Go の埋め込みメソッドから親フィールドにアクセスする: 実現可能ですか?
Go では、埋め込みメソッドを使用して他の型に型を埋め込むことができ、コードを再利用し、よりシンプルなインターフェイスを提供します。しかし、一般的な疑問が生じます: 埋め込みメソッドは親型のフィールドにアクセスできますか?
Background:
Go の埋め込みメカニズムは合成を利用して、型の機能を拡張します。継承。型が埋め込まれると、そのフィールドとメソッドは埋め込み型の一部になります。
目標:
この質問の目的は、アクティブ レコード スタイルの ORM の作成に関連しています。 Go では、データ ストアを抽象化するためにユーザー構造体にメソッドが埋め込まれています。操作。
例:
type Foo struct { *Bar Name string } func (s *Foo) Method() { // How to access "Name" field from this embedded method? }
質問:
トップレベルのフィールドを作成する方法はありますか (親フィールド) s.Name や call などの埋め込みメソッドからアクセス可能s.Method()?
答え:
Go は、埋め込みメソッドからの親フィールドへのアクセスをネイティブにサポートしていません。埋め込みメソッドのレシーバーは、この場合は埋め込み型 *Bar に厳密にバインドされます。したがって、親フィールドに直接アクセスすることはできません。
代替アプローチ:
以上がGo の埋め込みメソッドは親フィールドにアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。