• 罗杰
    2021-11-08
    float 其实相当复杂,开发中如果能避开就避开,例如金钱单位只有美元或者人民币我建议以分作为单位。

    作者回复: 嗯,是这样的。

    共 6 条评论
    58
  • liaomars
    2021-11-09
    var f1 float32 = 16777216.0 var f2 float32 = 16777217.0 f1 == f2 // true f1 转换成二进制是:1266679808 f2 转换成二进制也是:1266679808 这个为什么是相等的,是因为转换成二进制的数据是相等的。

    作者回复: 👍

    
    38
  • jc9090kkk
    2021-11-10
    type Myint int32 这种自定义类型在实际应用中有什么优势吗?

    作者回复: 采用自定义类型时,我们考虑的角度不是优劣,而是需求。以type Myint int32为例,我们这么做,显然是因为int32不能满足我们的需求。哪些需求不能满足呢?第一个就是抽象,我们要建立更高级的抽象;第二个是我们不能为go原生类型int32增加我们想要的方法,只有通过自定义类型来实现。

    
    25
  • 羊羊
    2021-11-08
    0x1.Fp+0 // 1.9375 * 2^0 = 1.937500这个是如何计算得到的?0x1.F=1.9375是如何得到的?

    作者回复: 0x1.Fp+0中的F是十六进制数,它的十进制值为15。F在小数点后一位,因此上面数字的小数部分0.F转换为10进制小数就是15 x 16^(-1)=0.9375

    
    11
  • 在下宝龙、
    2021-11-29
    type Myint int type MyMapp map[string]int func main(){ var x Myint var y int x=y//会报错 mp1:=make(MyMapp) mp2:=make(map[string]int) mp1=mp2 //不会报错 } 老师为甚么map就不会报错

    作者回复: 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

    
    7
  • 松
    2022-01-28
    func main() { var f2 float32 = 16777216.0 var f3 float32 = 16777217.0 // 1001011100000000000000000000000 fmt.Printf("%b\n", math.Float32bits(f2)) // 1001011100000000000000000000000 fmt.Printf("%b\n", math.Float32bits(f3)) } 变量的二进制表示一样,所以相同了

    作者回复: 👍

    
    6
  • 运维夜谈
    2021-12-29
    老师,自定义类型和类型别名有什么样的应用场景?比如自定义一个类型,本质还是int32,那为啥不直接用int32,看起来感觉有点语法糖的意思,用处不大,特别是类型别名😢

    作者回复: 原生的int32不能有方法,但自定义类型可以有方法哦。比如我定义一个名为Age的类型:type Age int32。Age可以作为“年龄”的抽象。我们可以为Age定义方法。至于类型别名,更多用于重构代码或基于已有包的二次封装。

    共 2 条评论
    5
  • ryanxw
    2022-04-15
    工程开发中尽量不用浮点,像我们都要求用string来存价格

    作者回复: 浮点用起来的确坑挺多。当然这也和其他实现原理有关。

    
    4
  • tequ1lAneio
    2021-11-09
    老师好,类型别名具体会在哪些场景用得到呢?

    作者回复: 类型别名加入go的初衷就是为了重构,这也是其主要场景。在第17讲中还会有提及。

    
    4
  • 顾海
    2022-03-27
    白老师,github地址是什么

    作者回复: 你是指本专栏的对应的示例代码仓库么?专栏的普通章节 示例代码都很短,没有放到代码仓库中。对于实战小项目,仓库地址在https://github.com/bigwhite/publication/tree/master/column/timegeek/go-first-course。 我个人github是:https://github.com/bigwhite 不知道是否回答了你的问题:)。

    
    3