」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 在具有共享字段的結構上實現相同的方法時如何避免程式碼重複?

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

發佈於2024-11-19
瀏覽:234

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

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

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

自訂類型作為方法接收器

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

組合

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

範例

考慮以下程式碼片段:

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 類型充當方法接收者,由於其嵌入的 Version 字段,它的 PrintVersion 方法可以被 Game 和 ERP 結構體存取。

用法

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

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
}

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3