基本类型

整型

有符号整型 int8、int16、int32和int64 分别对应8、16、32、64 bit大小的有符号整数。

这四种类型的取值范围

  • 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,uint16,uint32,uint64分别对应8、16、32、64 bit大小的无符号整数。

  • uint8(0 -> 255)
  • uint16(0 -> 65,535)
  • uint32(0 -> 4,294,967,295)
  • uint64(0 -> 18,446,744,073,709,551,615)

在go语言中int是根据平台架构相关的类型,在32位平台int和int32相当,在64位平台int和int64相当。

go语言中还有byte和uintptr类型也是整型, byte是unit8的别名用来表示一个字节,uintptr用来存放指针的类型,和int类型一样跟平台架构相关。

浮点型

go语言中有两张浮点型float32和float64。float32精确到小数点后7 位,float64精确到小数点后15位。

二者的取值范围

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

布尔型

布尔型的值只能是 true 或者 false这两个go语言内置常量。

可以逻辑运算的类型进行逻辑运算会产生布尔型。

var a = 1
a == 5  // false
a == 1  // true

aStr := "aa"
aStr == "vvv" //false
aStr == "aa" // true

复数类型

go内置complex64complex128来表示复数,内嵌函数realimag可以分别获得相应的实数和虚数部分。

类型转换

在golang中不支持隐式类型转换

var a int64 = 30
var b int32
b = a //编译器报错 

我们自己需要用类型转换表达式类转换类型

类型名(表达式)
var a int64 = 3
var b int32
b = int64(a) //ok

var sum int = 90
var count int = 50
var mean float32
mean = float32(sum)/float32(count) //ok