什么时候int是64位?

Yad*_*ood -3 go

根据文档

int是有符号整数类型,其大小至少为32位。但是,它是一个独特的类型,而不是int32的别名。

但是它没有说哪个平台或什么时候会比int32大。

谁能给我更多细节吗?还是在哪里处理它的源代码?我可以强制编译器将int设置为64位吗?

我知道我可以使用int64。这不是要求最佳实践的问题。

Gre*_*Guy 5

一个int实现的大小大概是由实现定义的,这意味着它会因平台而异,具体取决于操作系统和内核体系结构。大多数编程语言(例如C)就是这种情况。

如果必须精确地有一个64位整数,那么int64类型就存在了,它将保证整数中恰好有64位。同样用int32int16等。否则,文档建议使用int,因为编译器然后可以更容易地优化代码。


pet*_*rSO 5

Go编程语言规范

数值类型

还有一组预先声明的数字类型,具有特定于实现的大小:

uint     either 32 or 64 bits
int      same size as uint
Run Code Online (Sandbox Code Playgroud)

的大小int取决于编译器编写器。通常,这是主机的自然有效大小。例如,在amd64上为64位,在386体系结构上为32位。


例如,

package main

import (
    "fmt"
    "runtime"
    "strconv"
)

func main() {
    fmt.Println(runtime.GOARCH, strconv.IntSize)
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ uname -p
x86_64
$ go run intsize.go
amd64 64
$ 
Run Code Online (Sandbox Code Playgroud)

游乐场:https : //play.golang.org/p/wyNm2Hyzl6W

输出:

amd64p32 32
Run Code Online (Sandbox Code Playgroud)

围棋博客:围棋场内


Go继承自C。

C编程语言,第二版,Brian W. Kernighan和Dennis Ritchie

int 一个整数,通常反映主机上整数的自然大小