Go语言趣学指南-lesson7

整数

本章学习目标

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\n", year, year)
	a := "text"
	fmt.Printf("Type %T for %[1]v\n", a) //为避免重复使用同一个变量两次,可以利用[1]来重复第一个格式化变量
	b := 42
	fmt.Printf("Type %T for %[1]v\n", b)
	c := 3.14
	fmt.Printf("Type %T for %[1]v\n", c)
	d := true
	fmt.Printf("Type %T for %[1]v\n", 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)
    

整数环绕

所有的整数类型都有一个取值范围,超过这个范围,就会发生“环绕”。如何避免?咋需要选择取值范围大的类型了。

posted @ 2020-12-23 08:46  walker1024  阅读(256)  评论(0编辑  收藏  举报