跳到主要内容

整数

Go 的整数类型有哪些?​

  • 位宽: 决定能表示的整数范围;有符号类型可表示负数,无符号类型从零开始,int 与 uint 的宽度由平台决定;
类型描述
int平台相关有符号整数
uint平台相关无符号整数
int8 / int16 / int32 / int64固定位宽有符号整数
uint8 / uint16 / uint32 / uint64固定位宽无符号整数
byteuint8 别名
runeint32 别名
uintptr可保存指针位模式的整数

整数字面量有哪几种写法?​

func main() {
decimal := 42 // 十进制
binary := 0b101010 // 二进制
octal := 0o52 // 八进制
hex := 0x2a // 十六进制
readable := 1_000_000 // 下划线仅提升可读性
println(decimal, binary, octal, hex, readable)
}

整数溢出会怎样, uint8 溢出后如何回绕?​

  • 运行时溢出: 无符号运算按位宽回绕;有符号运算的溢出结果也由表示方式确定,不会自动报告业务错误;
  • 常量越界: 编译器会拒绝无法由目标类型表示的常量,不能把运行时回绕规则用于解释 var n uint8 = 256;
package main

import "fmt"

func main() {
var n uint8 = 255 // uint8 范围为 0..255
n++ // 溢出后回绕为 0
fmt.Println(n)
}