整数类型
有符号整型
- int(根据操作系统不同所占据存储空间会改变, 32位系统占据4个字节,64位系统占据8个字节)
- int64(占据8个字节)
- int32 (占据4个字节)
- int16 (占据2个字节)
- int8 (占据一个字节 -128~127 -2^7 ~ 2^7 - 1)
- 第一位表示符号位 0表示负数 1表示整数
无符号整型
- uint
- uint64
- uint32
- uint16
- uint8(0~255 0 ~ 2^8 -1)
- uintptr
// %T 输出数据类型
// unsafe.Sizeof(var) 输出变量所占据内存大小(单位是字节)
//(type)var 强制类型转换(go语言中没有隐式转换,要转换数据类型必须显示强制指定类型)
var num1 int32 = 10
var num2 int64 = 21
fmt.Println(num1 + num2) // 虽然都是整数类型,但是因为具体类型不同不能直接进行运算操作
// 解决方式1
fmt.Println((int64)num1 + num2)
// 解决方式2
fmt.Println(num1 + (int32)num2) // 高位向地位转换需要注意溢出问题
浮点型
var f float32 = 3.14
fmt.Printf("f = %v ---- %f, type = %T\n", f,f,f) // %f 默认是保留6位小数
fmt.Printf("f = %v ---- %.4f, type = %T\n", f,f,f) // 保留4位小数
- float64(8个字节, 64位系统默认的浮点数类型)
var f1 = 3.14e2 // 3.14 * 10^2
var f2 = 3.14e-2 // 3.14 除以 10^2
var f float64 = 1128.8
fmt.Println(f * 100)
m1 := 8.2
m2 := 3.8
fmt.Println(m1 - m2)
decimal 第三方包解决类似问题
// int 类型转换成float类型
a := 10
b := float(64)
fmt.Println(b)
布尔类型
// go 语言中 bool 类型 只有 true 和 false 两种值
// 不能像部分类型一样,非零、非空表示
// 默认是false
// 不能参与数值运算
num := 30 // 得到一个int类型数据
fmt.Printf("num=%v\n", num)
fmt.Printf("num=%d\n", num)
fmt.Printf("num=%o\n", num)
fmt.Printf("num=%x\n", num)
fmt.Printf("num=%b\n", num)