首頁 >後端開發 >Golang >Golang中如何避免具有共享欄位的函數的程式碼重複?

Golang中如何避免具有共享欄位的函數的程式碼重複?

DDD
DDD原創
2024-10-27 07:50:31969瀏覽

How to Avoid Code Repetition for Functions with Shared Fields in Golang?

避免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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn