避免Golang 中具有共享字段的函數的代碼重複
為具有相同字段的多個結構體編寫函數時要防止代碼重複,請考慮以下方法:
不要為每個結構體定義單獨的函數,而是為共用欄位建立自訂類型,例如版本字串。此類型可以充當您要實現的函數的方法接收器。
<code class="go">type Version string func (v Version) PrintVersion() { fmt.Println("Version is", v) }</code>
在您的結構中,使用組合將自訂類型包含為欄位:
<code class="go">type Game struct { Name string MultiplayerSupport bool Genre string Version } type ERP struct { Name string MRPSupport bool SupportedDatabases []string Version }</code>
現在,您可以使用附加到自訂類型的方法存取和列印兩個結構中的版本欄位:
<code class="go">func main() { g := Game{ "Fear Effect", false, "Action-Adventure", "1.0.0", } g.PrintVersion() // Version is 1.0.0 e := ERP{ "Logo", true, []string{"ms-sql"}, "2.0.0", } e.PrintVersion() // Version is 2.0.0 }</code>
此方法可讓您避免程式碼重複,同時保持從不同結構列印版本欄位的能力。透過將函數定義為自訂類型的方法,您可以確保嵌入該類型的所有結構體使用相同的實作。
以上是Golang中如何避免具有共享欄位的函數的程式碼重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!