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

这是一个基本的围棋程序


package main


import (

        "fmt"

        "time"

)


type myTime time.Time


func 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,它可用于“正常”但不适用于“我的”。


白猪掌柜的
浏览 262回答 2
2回答

潇潇雨雨

fmt.Println在将类型格式化为字符串时使用该String()方法(或者更确切地说是fmt.Stringer接口),如果它可用的话。当您使用基础类型创建新类型时(在您的情况下time.Time):type myTime time.Time您不会继承基础类型的方法集。因此,myTime没有String()方法,所以 fmt 将使用结构的默认格式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go