为了账号安全,请及时绑定邮箱和手机立即绑定

命名类型的调用方法

命名类型的调用方法

Go
www说 2021-11-15 17:16:07
我有一个命名类型,我需要做一些 JSON unmarshmaling:type StartTime time.Timefunc (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)如何向现有类型添加方法,同时保留其原始方法?
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

使用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


查看完整回答
反对 回复 2021-11-15
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信