埋め込み構造体とメソッドの継承
Go では、ある型から別の型にメソッドを継承するために、埋め込み構造体がよく使用されます。ただし、親構造体内で埋め込み構造体を明示的に初期化する必要があるのは面倒な場合があります。
埋め込み構造体なしでメソッドを継承できますか?
いいえ、そうではありません。 Goでは埋め込み構造体を使わずにメソッドを継承することが可能です。言語仕様に従って、型 T のメソッド セットは、レシーバー型 T のメソッドのみで構成されます。
埋め込まれた構造体の動作について
構造体が別の構造体を埋め込む場合、親構造体のメモリ レイアウトには、埋め込まれた構造体のメモリ レイアウトが組み込まれます。ただし、親構造体からアクセスできるのは、埋め込み構造体のプロモートされたフィールドとメソッドのみです。
プロモートされたフィールドとメソッド
プロモートされたフィールドとメソッドは、アクセスできるものです。親構造体を介して直接。匿名フィールドの場合、次のルールが適用されます:
の影響メソッド継承の場合
メソッド継承のコンテキストでは、埋め込まれた構造体のメソッドが、埋め込まれた構造体型のレシーバーを持つ場合にのみ、親構造体に昇格されることを意味します。たとえば、GetString メソッドに Properties 型のレシーバーがある場合、*Node.
Alternative Approaches
埋め込み構造体を使用したくない場合は、次の代替案を検討できます:以上が埋め込み構造体なしで Go でメソッドを継承できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。