Golang数字类型

Golang数字类型

原文见:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/04.5.md

整型 int 和浮点型 float

Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码(详情参见 二的补码 页面)。

Go 也有基于架构的类型,例如:int、uint 和 uintptr。

这些类型的长度都是根据运行程序所在的操作系统类型所决定的:

int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。
uintptr 的长度被设定为足够存放一个指针即可。
Go 语言中没有 float 类型。

与操作系统架构无关的类型都有固定的大小,并在类型的名称中就可以看出来:

整数

  • 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 [255]
  • uint16[0 -> 65,535]
  • uint32[0 -> 4,294,967,295]
  • uint64[0 -> 18,446,744,073,709,551,615]

浮点型(IEEE-754 标准):

  • float32(+- 1e-45 -> +- 3.4 * 1e38)
  • float64(+- 5 * 1e-324 -> 107 * 1e308)

int 型是计算最快的一种类型。

整型的零值为 0,浮点型的零值为 0.0。

float32 精确到小数点后 7 位,float64 精确到小数点后 15 位。由于精确度的缘故,你在使用 == 或者 != 来比较浮点数时应当非常小心。你最好在正式使用前测试对于精确度要求较高的运算。

你应该尽可能地使用 float64,因为 math 包中所有有关数学运算的函数都会要求接收这个类型。

你可以通过增加前缀 0 来表示 8 进制数(如:077),增加前缀 0x 来表示 16 进制数(如:0xFF),以及使用 e 来表示 10 的连乘(如: 1e3 = 1000,或者 6.022e23 = 6.022 x 1e23)。

你可以使用 a := uint64(0) 来同时完成类型转换和赋值操作,这样 a 的类型就是 uint64。

Go 中不允许不同类型之间的混合使用,但是对于常量的类型限制非常少,因此允许常量之间的混合使用


阅读更多
文章标签: golang 语言 go
个人分类: Golang
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭