自定义类型
在Go语言中有一些基本的数据类型,如string、int、float64、bool等数据类型,Go语言中使用type关键字来定义自定义类型
如上图我们自定义了一个数据类型MyTime,也就是time.Time,那么为什么time.Time所拥有的方法MyTime却没有?
官方已经告诉我们:go.dev/ref/spec#Ty…
意思就是说,只要是type自定义的类型,都是不同的(类型别名除外)。显然我们定义的MyTime和time.Time是不同的
类型别名
类型别名规定:TypeAlias只是Type的别名,本质上TpyeAlias和Type是同一个类型,就像是你的小名和你的大名以及你的英文名都是指的你本人。
golang中的rune、byte和any就是类型别名
我们通过类型别名再尝试一下上面的MyTime类型
system time: [34 50 48 50 50 45 49 50 45 48 54 84 49 49 58 48 52 58 52 49 46 57 55 53 50 55 50 55 43 48 56 58 48 48 34], []uint8
my time: [34 50 48 50 50 45 49 50 45 48 54 84 49 49 58 48 52 58 52 50 46 48 49 54 49 52 50 53 43 48 56 58 48 48 34], []uint8
果然,设置类型别名之后MyTime和time.Time是一致的
补充:内嵌类型
通过将time.Time嵌入MyTime,此时MyTime也可以获得Time类型的方法集