在Go中,有int可能等同于int32或int64取决于系统架构的类型。我可以声明一个整数变量而不必担心它的大小:
int
int32
int64
var x int
为什么没有type float,它等于float32或float64取决于我的系统的体系结构?我希望我也可以:
float
float32
float64
var x float
float已在版本2011/01/20中删除。
您仍然可以使用简短的变量声明:
x := 0.
但正如GO常见问题解答所述:
出于可移植性的原因,我们决定以代码中的一些显式转换为代价,使事情变得清晰明了。
您可以在以下主题中查看2011年之前的辩论:
我什至对摆脱无用的浮点数和复杂类型的建议感到有些沮丧。 一代人都不需要真正解决这个问题(人类一代,而不是计算机一代;> 90年代初是最后一次真正成为问题),但这正是我认为的时刻它再次变得相关。 在过渡到64位芯片和过渡到非基于Intel的平台(移动芯片,GPU等)之间,我认为删除这些类型是一个巨大的错误。 类比整数类型和浮点类型的问题是: 在整数类型的情况下,您并不关心大小,除非它溢出 。 * 对于浮点类型,您始终需要注意大小,因为它总是会影响您的答案(除非您仅在涉及小整数的2^n情况下进行算术运算,否则这种情况是准确的,在这种情况下您会更好(带有定点表示)。 因此 ,“我只想要一个好的代表”就不可能有同样的可能性* 。 除了在内存使用(和缓存)方面,32位浮点数从未具有速度优势,因此现有的32位浮点数类型未定义为“快速”浮点数。它就在那儿(我想),因为这就是C语言中所说的。我不反对如果float64被称为“ double”(在我所知道的大多数语言中都是这样)。 但是我真的认为,如果没有“ float”类型,该语言会更好。 大小对于任何浮点数的使用确实很重要,无论是由于内存消耗还是由于所需的精度。
我什至对摆脱无用的浮点数和复杂类型的建议感到有些沮丧。 一代人都不需要真正解决这个问题(人类一代,而不是计算机一代;> 90年代初是最后一次真正成为问题),但这正是我认为的时刻它再次变得相关。 在过渡到64位芯片和过渡到非基于Intel的平台(移动芯片,GPU等)之间,我认为删除这些类型是一个巨大的错误。
类比整数类型和浮点类型的问题是:
2^n
除了在内存使用(和缓存)方面,32位浮点数从未具有速度优势,因此现有的32位浮点数类型未定义为“快速”浮点数。它就在那儿(我想),因为这就是C语言中所说的。我不反对如果float64被称为“ double”(在我所知道的大多数语言中都是这样)。
但是我真的认为,如果没有“ float”类型,该语言会更好。 大小对于任何浮点数的使用确实很重要,无论是由于内存消耗还是由于所需的精度。