Go で共有フィールドを持つ構造体の共通メソッドを実装する方法
共通フィールドを共有する構造体を操作する場合、それらすべてに適用できるメソッドを追加することが望ましいです。この質問では、Beego/ORM のコンテキストでこのシナリオを検討します。ModelA と ModelB の 2 つの構造体に Save() メソッドが必要です。
提案されたソリューション
}
Save()func (b ModelB) Save() {
}
// Implementation for ModelA
Embedding:
という基本構造体を作成します。共有 GUID フィールドを含む ModelC。この構造体を ModelA と ModelB に埋め込みます。 ModelC で Save() メソッドを定義して、ModelA と ModelB の両方で使用できるようにします。// Implementation for ModelB
</p>type ModelC struct {<ul> <li><strong>}</strong></li>func (c ModelC) Save() エラー{</ul> <p><br>}</p> <pre class="brush:php;toolbar:false">Guid string `orm:"pk"`型 ModelA 構造体 {
}
// Implementation for ModelC型 ModelB 構造体{
}
ModelC FiledA string埋め込みに関する注意
ModelC FiledB string埋め込みには特定の制限があることに注意してください。埋め込み Save() メソッドは ModelA と ModelB で使用できますが、これらの構造体に固有の追加フィールドは Save() 操作に自動的に含まれません。
最も適切なソリューションは、システムの特定の要件によって異なります。 Save() の実装が ModelA と ModelB の間で大幅に異なる場合、インターフェイスのアプローチにより柔軟性が高まります。ただし、共通の実装を共有している場合は、冗長コードの必要性がなくなるため、埋め込みの方が効率的になる可能性があります。
以上がフィールドを共有する Go 構造体に共通の `Save()` メソッドを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。