是否有一个名为"int32"的内置函数?

Nig*_*iri 3 go

下面的代码片段工作正常.
在这种情况下,"int32"是什么?一个功能?
我知道有一个名为"int32"的类型

这可能是一个愚蠢的问题.我刚刚完成了A Tour of Go但我找不到答案.(我可能会遗漏一些东西.)

package main

import "fmt"

func main() {
    var number = int32(5)
    fmt.Println(number) //5
}
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 10

它是一种类型转换,是数字类型所必需的.

在表达式或赋值中混合使用不同的数字类型时,需要进行转换.例如,int32和int的类型不同,即使它们在特定体系结构上可能具有相同的大小.

由于您执行变量声明,因此需要指定' 5' 的类型.
如提到的另一种选择,rightfold评论是:var number int32 = 5

(相对于一个短变量声明number := 5)

另见Go FAQ:

C中数字类型之间自动转换的便利性被它引起的混乱所抵消.
何时表达式未签名?价值有多大?它溢出了吗?结果是否可移植,与其执行的机器无关?

它还使编译器复杂化; "通常的算术转换"不容易实现,并且跨架构不一致.

出于可移植性的原因,我们决定以代码中的一些显式转换为代价,使事情变得清晰明了.然而,Go-any精度值中常量的定义没有签名和大小注释 - 很大程度上改善了问题.

相关的细节是,与C 不同,即使是64位类型int,int64也是不同的类型int.
int类型是通用的; 如果你关心整数持有多少位,Go鼓励你明确.

  • 当然,另一种选择是`var number int32 = 5`. (2认同)