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

Go 重新定义类型格式和方法

Go 重新定义类型格式和方法

Go
白猪掌柜的 2021-08-16 19:44:56
这是一个基本的围棋程序package mainimport (        "fmt"        "time")type myTime time.Timefunc main() {        my := myTime(time.Now())        fmt.Println(my)        normal := time.Now()        fmt.Println(normal)}以及相应的输出{63547112172 291468455 0x545980}2014-09-23 23:36:12.292132305 +0000 UTC我想知道为什么 myTime 的打印效果与 time.Time 不同。它们基本上应该来自相同的类型......此外,如果我尝试访问任何 time.Time 方法,比如说,Day,它可用于“正常”但不适用于“我的”。
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

fmt.Println在将类型格式化为字符串时使用该String()方法(或者更确切地说是fmt.Stringer接口),如果它可用的话。当您使用基础类型创建新类型时(在您的情况下time.Time):

type myTime time.Time

您不会继承基础类型的方法集。因此,myTime没有String()方法,所以 fmt 将使用结构的默认格式。


查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

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