首頁 > 後端開發 > Golang > 命名類型與嵌入:如何為現有 Go 類型新增方法?

命名類型與嵌入:如何為現有 Go 類型新增方法?

DDD
發布: 2024-12-11 08:55:12
原創
961 人瀏覽過

Named Types vs. Embedding: How Do I Add Methods to an Existing Go Type?

向現有類型添加方法:命名類型與嵌入

處理命名類型時,了解創建新類型和嵌入新類型之間的區別非常重要現有類型。讓我們探討如何為現有類型新增方法,同時保留其原始方法。

情況 1:命名類型

如果使用 type 關鍵字定義新類型,它將與基礎類型不同。例如,在提供的程式碼片段中:

type StartTime time.Time
登入後複製

StartTime 是一個新類型,它不會有 time.Time 的方法,例如 Date()。這是因為命名類型不會從其基礎類型繼承方法。

情況 2:嵌入

要將方法新增至現有型別而不遺失其原始方法,請使用嵌入。這涉及創建一個嵌入現有類型的新結構。例如,我們可以使用嵌入來重寫上面的程式碼:

type StartTime struct {
    time.Time
}
登入後複製

在這種情況下,StartTime 嵌入了 time.Time,這意味著它包含它的所有方法和欄位。

如何嵌入有效

當一個結構匿名嵌入另一個結構時(不指定字段名),嵌入結構的字段和方法被提升為嵌入結構。這意味著它們可以直接在嵌入結構體的實例上使用。

使用範例

透過嵌入,您可以存取 StartTime 和 StartTime的方法time.Time:

func main() {
    s := StartTime{time.Now()}
    fmt.Println(s.Date()) // Will output the current date
}
登入後複製

結論

如果您需要修改行為或向現有類型添加方法,請考慮使用嵌入。它允許您保留原始方法,同時擴展類型的功能。

以上是命名類型與嵌入:如何為現有 Go 類型新增方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板