如何在Go 中實現具有共享字段的結構體的通用方法
當使用共享公共字段的結構體時,它可能會需要添加一種可以應用於所有這些的方法。本問題在 Beego/ORM 的背景下探討了這個場景,其中兩個結構體 ModelA 和 ModelB 需要 Save() 方法。
建議的解決方案
<br>type Savable 介面{<pre class="brush:php;toolbar:false">Save()
}
func (a ModelA) Save() {
// Implementation for ModelA
}
// Implementation for ModelB
func (b ModelB) Save() {
建立一個名為ModelC 的基本結構包含共用Guid 字段。將此結構嵌入到 ModelA 和 ModelB 中。在 ModelC 中定義 Save() 方法,使其可供 ModelA 和 ModelB 使用。
Guid string `orm:"pk"`
<p>type ModelC struct {</p><p></p>}<pre class="brush:php;toolbar:false">// Implementation for ModelC
func (c ModelC) Save() 錯誤{
func (c ModelC) Save() 錯誤{
ModelC FiledA string
ModelC FiledB string
}
類型ModelB 結構體{
}嵌入的注意事項
應該注意的是,嵌入有一定的限制。雖然嵌入式 Save() 方法可供 ModelA 和 ModelB 使用,但特定於這些結構的任何其他欄位都不會自動包含在 Save() 作業中。
結論 最適合的解決方案取決於系統的特定要求。如果 ModelA 和 ModelB 之間的 Save() 實作差異很大,則介面方法可提供更大的靈活性。然而,如果它們共享一個共同的實現,嵌入可能會更有效,因為它消除了對冗餘程式碼的需求。以上是如何為共用欄位的 Go 結構體實作通用的 Save() 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!