我发现 Go 中有不同的整数类型令人困惑。考虑到许多其他主要编程语言中不存在这些区别,定义这些不同类别的必要性是什么?
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
Best Answer-推荐答案
Go有两种类型:
架构依赖类型 如 int , uint , uintptr .和 架构独立类型 如 int32 , int64 等 依赖于体系结构的类型对于运行程序的机器具有适当的长度: int 是默认的有符号类型:它需要 32 位(4 字节)在 32 位机和 64 位机上的 64 位(8 个字节);未签名的 uint 也是如此. uintptr 是一个足以存储指针值的无符号整数。 与体系结构无关的类型具有由其名称指示的固定大小(以位为单位):
对于整数,范围是:
int8 (-128 -> 127)
int16 (-32768 -> 32767)
int32 (− 2,147,483,648 -> 2,147,483,647)
int64 (− 9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
对于无符号整数 :
uint8 (with alias byte, 0 -> 255)
uint16 (0 -> 65,535)
uint32 (0 -> 4,294,967,295)
uint64 (0 -> 18,446,744,073,709,551,615)
对于花车 :
float32 (+- 1O-45 -> +- 3.4 * 1038 )
(IEEE-754) float64 (+- 5 * 10-324 -> 1.7 * 10308 )
int 是提供最快处理速度的整数类型。 整数的初始(默认)值为 0 ,对于浮点数,这是 0.0 float32 可靠地精确到大约 7 个小数位,float64 精确到大约 15 个小数位。
由于将浮点数与 == 进行比较,不可能达到完美的精度。或 != 必须非常小心!
关于types - 为什么 Go 有几种不同的整数类型?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/31266352/
|