以下代码段工作正常
在这种情况下,“int32”是什么?一个功能?
我知道有一个名为“int32”的类型
这可能是一个愚蠢的问题。我刚刚完成了A Tour of Go,但我找不到答案。(我可能会遗漏一些东西。)
package main
import "fmt"
func main() {
var number = int32(5)
fmt.Println(number) //5
}
答案 0 :(得分:10)
这是type conversion,numeric types是必需的。
在表达式或赋值中混合使用不同的数字类型时,需要进行转换。例如,int32和int的类型不同,即使它们在特定体系结构上的大小可能相同。
由于您执行了variable declaration,因此您需要指定' 5
'的类型。
rightfold中the comments提到的另一个选项是:var number int32 = 5
(与number := 5
另见Go FAQ:
C中数字类型之间自动转换的便利性被它引起的混乱所抵消 何时表达式未签名?价值有多大?它溢出了吗?结果是否可移植,与其执行的机器无关?
它也使编译器复杂化; “通常的算术转换”不容易实现,并且跨架构不一致。
出于可移植性的原因,我们决定以代码中的一些显式转换为代价,使事情变得清晰明了。然而,Go-任意精度值中常量的定义没有签名和大小注释 - 很大程度上改善了重要性。
相关的细节是,与C不同,即使
int
是64位类型,int64
和int
也是不同的类型。
int
类型是通用的;如果你关心整数持有多少位,Go鼓励你明确。