基本类型
整型
有符号整型 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内置complex64
和complex128
来表示复数,内嵌函数real
,imag
可以分别获得相应的实数和虚数部分。
类型转换
在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