2.2 整数

本篇学习 Go 的整数类型与取值范围,并能根据场景选择有符号和无符号整数。

字数 466 字

整数

概念说明

整数用于保存没有小数部分的数值。
Go 的整数分为有符号整数和无符号整数两类。

语法/规则

  1. 有符号整数:int8int16int32int64int
  2. 无符号整数:uint8uint16uint32uint64uint
  3. 整数字面量默认类型是 int
  4. uint8 的别名是 byte,常用于字节数据。
  5. intuint 的位宽与平台相关,在 64 位平台通常是 64 位。
  6. 不同整数类型不能直接运算,需要显式类型转换。

声明与范围示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
	"fmt"
	"math"
	"strconv"
)

func main() {
	var age int = 18
	var small uint8 = 255
	var delta int8 = -12

	fmt.Printf("age=%d\n", age)
	fmt.Printf("small=%d\n", small)
	fmt.Printf("delta=%d\n", delta)
	fmt.Printf("当前平台 int 位数:%d\n", strconv.IntSize)
	fmt.Printf("int8 范围:%d ~ %d\n", math.MinInt8, math.MaxInt8)
}

输出结果:

1
2
3
4
5
age=18
small=255
delta=-12
当前平台 int 位数:64
int8 范围:-128 ~ 127

类型转换后再运算示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package main

import "fmt"

func main() {
	var total int32 = 100
	var extra int64 = 20

	sum := int64(total) + extra
	fmt.Printf("sum=%d\n", sum)
}

输出结果:

1
sum=120

常见错误

  1. 不同整数类型直接运算,例如 int32 + int64,会编译报错。
  2. 给无符号整数赋负数,例如 var n uint8 = -1,会编译报错。
  3. 常量超出类型范围,例如 var n int8 = 128,会编译报错。
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 46 篇笔记 · 总计 2 万 5 千字(其中笔记 25104 字)