命名类型的调用方法

我有一个命名类型,我需要做一些 JSON unmarshmaling:


type StartTime time.Time

func (st *StartTime) UnmarshalJSON(b []byte) error {...}

由于StartTime是time.Time,我认为我可以调用属于 的方法time.Time,例如Date():


myStartTime.Date() // myStartTime.Date undefined (type my_package.StartTime has no field or method Date)

如何向现有类型添加方法,同时保留其原始方法?


www说
浏览 127回答 1
1回答

繁星淼淼

使用type关键字您正在创建一个新类型,因此它不会具有基础类型的方法。使用嵌入:type StartTime struct {    time.Time}引用规范:结构类型:结构体中匿名字段的字段或方法 如果是表示该字段或方法的合法选择器,则称为提升。fxx.ff所以嵌入(匿名)字段的所有方法和字段都被提升并且可以被引用。使用示例:type StartTime struct {    time.Time}func main() {    s := StartTime{time.Now()}    fmt.Println(s.Date())}输出(在Go Playground上试试):2009 November 10
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go