首頁  >  文章  >  後端開發  >  在具有共享字段的結構上實現相同的方法時如何避免程式碼重複?

在具有共享字段的結構上實現相同的方法時如何避免程式碼重複?

DDD
DDD原創
2024-10-27 02:21:30347瀏覽

How to Avoid Code Duplication When Implementing Identical Methods on Structs with Shared Fields?

在具有相同字段的結構體中使用通用函數的最佳實踐

在兩個結構體擁有相同字段的情況下,最好防止定義對這些欄位進行操作的方法時會出現程式碼重複。

自訂類型作為方法接收器

建議的方法是引入一個自訂類型(例如,Version)來服務作為方法接收者。由於所有自訂類型都可以用作方法接收器,因此此技術可以建立可應用於多個結構的單一方法。

組合

一旦自訂類型被定義後,可以使用組合將其合併到結構中。這涉及到在結構中嵌入自訂類型,本質上是創建一個嵌套結構。

範例

考慮以下程式碼片段:

<code class="go">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
}</code>

在這裡,Version 類型充當方法接收者,由於其嵌入的Version 字段,它的PrintVersion 方法可以被Game 和ERP 結構體存取。

用法

嵌入的Version 欄位可以像任何其他欄位一樣使用和修改:

<code class="go">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>

透過採用這種方法,可以消除與重複方法相關的程式碼重複,同時保持靈活性和類型安全性。

以上是在具有共享字段的結構上實現相同的方法時如何避免程式碼重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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