整数
本章学习目标
1、学会使用10种不同的整数类型
2、学会选择合适的类型
3、学会使用十六进制表示和二进制表示
Go语言里的整数类型
- Go提供10种不同类型的整数,它们都称为整数类型(integer)
- 不可以存小数部分
- 范围有限
- 通常根据数值范围来选取整数类型
- 5种整数类型是有符号的
- 能表示正数、0、负数
- 5种整数类型是无符号的
- 能表示正数和0
- 比较常用的整数类型有int和无符号的uint
8种整数类型取值范围
整数类型、包括有符号和无符号的、实际上一共8种类型,它们取值范围各不相同、和架构无关
- int8: -128 ~ 127
- int16: -32768 ~ 32767
- int32: -2147483648 ~ 2147483647
- int64: -9223372036854775808 ~ 9223372036854775807
- uint8: 0 ~ 255
- uint16: 0 ~ 65535
- uint32: 0 ~ 4294967295
- uint64: 0 ~ 18446744073709551615
int和uint
- int和uint是针对目标设备优化的类型:
- 在比较老的设备上int和uint都是32位,而在新设备上都是64位
- 虽然在某些设备上int可以当成int32,但是在有些设备上也可以当成int64,其实他们三个是不同的类型。
- int并不是其他类型的别名
打印数据类型
在Printf里使用%T可以打印出数据的类型
package main
import (
"fmt"
)
func main() {
year := 2020
fmt.Printf("Type %T for %v
", year, year)
a := "text"
fmt.Printf("Type %T for %[1]v
", a) //为避免重复使用同一个变量两次,可以利用[1]来重复第一个格式化变量
b := 42
fmt.Printf("Type %T for %[1]v
", b)
c := 3.14
fmt.Printf("Type %T for %[1]v
", c)
d := true
fmt.Printf("Type %T for %[1]v
", d)
}
执行结果:
Type int for 2020
Type string for text
Type int for 42
Type float64 for 3.14
Type bool for true
uint8
- uint8 可以用来表示8位的颜色(红绿蓝:0-255)
- 为什么不用int表示8位颜色呢?
- uint8的取值范围正好合适255,而int则多出来几十亿不合理
十六进制表示法
-
Go 语言中,在数的前面加上0x前缀表示可以用十六进制的形式表示数值
-
打印十六进制的数,使用%x格式化动词
-
同样也能指定宽度和填充
var red, green, blue uint8 = 0, 141, 213 fmt.Printf("color: #%02x%02x%02x;", red, green, blue)
整数环绕
所有的整数类型都有一个取值范围,超过这个范围,就会发生“环绕”。如何避免?咋需要选择取值范围大的类型了。