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

时间:2014-06-21 14:35:14

标签: go

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

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

package main

import "fmt"

func main() {
    var number = int32(5)
    fmt.Println(number) //5
}

1 个答案:

答案 0 :(得分:10)

这是type conversionnumeric types是必需的。

  

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

由于您执行了variable declaration,因此您需要指定' 5'的类型。 rightfoldthe comments提到的另一个选项是:var number int32 = 5

(与number := 5

short variable declaration相对

另见Go FAQ

  

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

     

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

     

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

     

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