一. 整型概述

  • 在Go语言中可以进行数学运算的类型分为整型和浮点型
  • 所有的整数数字存储到整型中就可以进行数学运算
    • 整型和整型运算的结果还是整型.(5/2=2)
    • 都是整型,但是int8和int16之间不可以进行运算,必须进行类型转换
  • 整型分为有符号整型和无符号整型
    • 有符号整型有正数和负数.其二进制最高位表示符号,0为正数1为负数.int和intx为有符号整型
      1
      2
      3
      //int8 举例
      0000 0010=2
      1000 0010=-2
    • 无符号整型只能取大于等于0的整数.其二进制最高位表示真实数字.unit和unitx为无符号整型
      1
      2
      3
      //uint8 举例
      0000 0010=2
      1000 0010=130
  • 整型取值范围和作用
    • 有符号整数统一公式为:-2的n-1次幂到2的n-1次幂减一
    • 无符号整数统一公式为:0到2的n次幂减一
      | 类型 | 取值范围 |

| ——: | :————————————— |
| int8 | [-128 , 127] |
| int16 | [-32768 , 32767] |
| int32 | [-2147483648 , 2147483647] Go语言中没有字符类型,所有字符都使用int32存储 |
| int64 | [-9223372036854775808 , 9223372036854775807] |
| int | 受限于计算机系统,系统是多少位,int为多少位 |
| uint8 | [0 , 255] |
| uint16 | [0 , 65535] |
| uint32 | [0 , 4294967295] |
| uint64 | [0 , 18446744073709551615] |
| uint | 受限于计算机系统,系统是多少位,uint为多少位 |
| rune | 与int32类似,常用在获取值的Unicode码 |
| byte | 与uint8类似.强调值为原始数据.一个字节占用8个二进制 |
| uintptr | 大小不确定,类型取决于底层编程 |

二.类型转换

  • Go语言是静态类型语言,并且不具备低精度向高精度自动转换功能,所以不同类型变量之间相互赋值需要进行类型转换.
  • 例如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    func main() {
    //声明3个类型变量
    var a int = 1
    var b int32 = 2
    var c int64 = 3
    fmt.Println(a, b, c)

    //把int32转换为int64
    a = int(b)
    fmt.Println(a, b)
    a = 1

    //把int64转换成int32
    b = int32(c)
    fmt.Println(b, c)
    b = 2

    //把int转换为int64
    c = int64(a)
    fmt.Println(a, c)
    c = 3
    }

三.不同进制整数

  • 支持八进制,十进制,十六进制数字创建整型,最后由系统转换为十进制
  • 不支持二进制值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    func main() {
    //默认表示十进制
    d := 17

    //0开头表示八进制
    o := 021

    //0x开头表示十六进制
    x := 0x11

    //e2表示10的2次方
    e := 11e2

    //输出
    fmt.Println(d, o, x, e)

    //把变量d中内容转换为二进制
    b := fmt.Sprintf("%b", d)
    fmt.Println(b)
    }