避免Golang 中具有共享字段的函數的代碼重複
為具有相同字段的多個結構體編寫函數時要防止代碼重複,請考慮以下方法:
不要為每個結構體定義單獨的函數,而是為共用欄位建立自訂類型,例如版本字串。該類型可以充當您要實現的功能的方法接收器。
type Version string
func (v Version) PrintVersion() {
fmt.Println("Version is", v)
}
在您的結構中,使用組合將自訂類型包含為欄位:
type Game struct {
Name string
MultiplayerSupport bool
Genre string
Version
}
type ERP struct {
Name string
MRPSupport bool
SupportedDatabases []string
Version
}
現在,您可以使用附加到自訂類型的方法存取並列印兩個結構體中的 Version 欄位:
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
}
這種方法可讓您避免程式碼重複,同時保持從不同結構列印 Version 欄位的能力。透過將函數定義為自訂類型的方法,您可以確保嵌入該類型的所有結構使用相同的實作。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3