作者回复: 嗯,是这样的。
作者回复: 👍
作者回复: 采用自定义类型时,我们考虑的角度不是优劣,而是需求。以type Myint int32为例,我们这么做,显然是因为int32不能满足我们的需求。哪些需求不能满足呢?第一个就是抽象,我们要建立更高级的抽象;第二个是我们不能为go原生类型int32增加我们想要的方法,只有通过自定义类型来实现。
作者回复: 0x1.Fp+0中的F是十六进制数,它的十进制值为15。F在小数点后一位,因此上面数字的小数部分0.F转换为10进制小数就是15 x 16^(-1)=0.9375
作者回复: int与map[string]int虽然都是go原生类型,但它们却有不同。int在go中被归为defined type一类,而map[string]int则不是defined type。因此两个defined type: int与MyInt相互赋值必须显式转型。而map[string]int与MyMapp中,前者不是defined type,go语言有规定:这种情况下,可以直接赋值。具体参考这里:https://golang.google.cn/ref/spec#Assignability
作者回复: 👍
作者回复: 原生的int32不能有方法,但自定义类型可以有方法哦。比如我定义一个名为Age的类型:type Age int32。Age可以作为“年龄”的抽象。我们可以为Age定义方法。至于类型别名,更多用于重构代码或基于已有包的二次封装。
作者回复: 浮点用起来的确坑挺多。当然这也和其他实现原理有关。
作者回复: 类型别名加入go的初衷就是为了重构,这也是其主要场景。在第17讲中还会有提及。
作者回复: 你是指本专栏的对应的示例代码仓库么?专栏的普通章节 示例代码都很短,没有放到代码仓库中。对于实战小项目,仓库地址在https://github.com/bigwhite/publication/tree/master/column/timegeek/go-first-course。 我个人github是:https://github.com/bigwhite 不知道是否回答了你的问题:)。