Contents

Go_basic_type

Contents

Go是强类型语言,不会像python一样进行隐式转换。任何不同类型之间的转换都必须显式说明,也不支持类似C语言中的运算符重载。

数字类型

Go语言支持整型和浮点型数字,并且原生支持复数。

有些类型是基于架构的,类型长度由运行程序所在操作系统决定:

  • intuint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。
  • 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(0 -> 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)精确到小数点后7位
  • float64(+- 5 * 1e-324 -> 107 * 1e308) 精确到小数点后15位

注意Go中没有 float和double 类型,只有float32float64,再不考虑内存占用情况下优先使用float64

64位系统中,intint64是一种类型吗?

尽管64位系统中int和int64表示数字范围相同,但是仍然是不同类型。需要显示转换才能混用。