處理命名類型時,了解創建新類型和嵌入新類型之間的區別非常重要現有類型。讓我們探討如何為現有類型新增方法,同時保留其原始方法。
情況 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中文網其他相關文章!