整数类型

有符号整型

      • 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)  // 高位向地位转换需要注意溢出问题

浮点型

    • float32(4个字节)
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
// 不能参与数值运算
  • 字符串
    • 默认值是空
  • 特殊类型
    • byte
    • rune
  • 字面量语法
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)