布尔类型
布尔类型用于表示真假,类型名为bool,只有两个值true和false,占用一个字节宽度,零值为false
常用操作:
- 逻辑运算:
- 与(&&)
只有左、右表达式结果都为true,运算结果为true
- 或(||)
只要左、右表达式有一个为true,运算结果为true
- 非(!)
右表达式为true,运算结果为false;右表达式为false,运算结果为true
- 关系运算
- 等于(==)
- 不等于(!=)
使用fmt.Printf进行格式化参数输出,占位符:
- %t
数值类型
整型
Go语言提供了5种有符号、5种无符号、1种指针、1种单字节、1种单个unicode字符(unicode码点),共13种整数类型,零值均为0
类型名 | 字节宽度 | 说明&取值范围 |
---|---|---|
int | 与平台有关,32位系统4字节,64位系统8字节 | 有符号整型 |
uint | 与平台有关,32位系统4字节,64位系统8字节 | 无符号整形 |
rune | 4字节 | Unicode码点,取值范围同uint32 |
int8 | 1字节 | 用8位表示的有符号整型,取值范围为:[-128, 127] |
int16 | 2字节 | 用16位表示的有符号整型,取值范围为:[-32768,32767] |
int32 | 4字节 | 用32位表示的有符号整型,取值范围为:[-2147483648,2147483647] |
int64 | 8字节 | 用64位表示的有符号整型,取值范围为:[-9223372036854775808,9223372036854775807] |
uint8 | 1字节 | 用8位表示的无符号整型,取值范围为:[0,255] |
uint16 | 2字节 | 用16位表示的无符号整型,取值范围为:[0, 65535] |
uint32 | 4字节 | 用32位表示的无符号整型,取值范围为:[0, 4294967295] |
uint64 | 8字节 | 用64位表示的无符号整型,取值范围为:[0, 18446744073709551615] |
byte | 1字节 | 字节类型,取值范围同uint8 |
uintptr | 与平台有关,32位系统4字节,64位系统8字节 | 指针值的无符号整型 |
字面量:
- 十进制表示法:以10为基数,采用0-9十个数字,逢10进位,例如:10
- 八进制表示法:以8为基数,采用0-7八个数字,逢8进位,使用0开头表示为八进制表示,例如:010
- 十六进制表示法:以16为基数,采用0-9十个数字和A-F六个字母,逢16进位,使用0X开头表示为十六进制,例如:0X10
常用操作:
- 算术运算符:+、-、*、/、%、++、--
注意:针对/除数不能为0,且结果依然为整数
- 关系运算符:>、>=、<、<=、==、!=
- 位运算符:&、|、^、<<、>>、&^
对于负整数在计算机中使用补码进行表示,对应正整数二进制表示取反+1
针对左、右移的右操作数必须为无符号整型
- 赋值运算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
- 类型转换:
Go不会对自动对数据类型转换,因此左、右操作数类型必须一致或某个字面量,可通过类型名(数据)的语法将数据转换为对应类型。需要注意值截断和值溢出问题
使用fmt.Printf进行格式化参数输出,占位符:
%b:二进制
%c:字符
-
%d:十进制
%+d表示对正整数带+符号
%nd表示最小占位n个宽度且右对齐
%-nd表示最小占位n个宽度且左对齐
%0nd表示最小占位n个宽度且右对齐,空字符使用0填充 %o:八进制,%#o带0的前缀
%x、%X:十六进制,%#x(%#X)带0x(0X)的前缀
%U: Unicode码点,%#U带字符的Unicode码点
%q:带单引号的字符
常用包:
- math
- math/rand
浮点型
浮点数用于表示带小数的数字,Go提供float32和float64两种浮点类型
字面量:
- 十进制表示法:3.1415926
- 科学记数法:1e-5
常用操作:
- 算术运算符:+、-、*、/、++、--
注意:针对/除数不能为0
- 关系运算符:>、>=、<、<=
浮点型不能进行==或!=比较,可选择使用两个浮点数的差在一定区间内则认为相等
- 赋值运算符:=、+=、-=、*=、/=
- 类型转换:
Go不会对自动对数据类型转换,因此左、右操作数类型必须一致或某个字面量,可通过类型名(数据)的语法将数据转换为对应类型。需要注意值截断和值溢出问题
使用fmt.Printf进行格式化参数输出,占位符:
-
%f、%F:十进制表示法
%n.mf表示最小占n个宽度并且保留m位小数
%e、%E:科学记数法表示
%g、%G:自动选择最紧凑的表示方法%e(%E)或%f(%F)
常用包
- math
- math/rand
复数型
Go提供complex64和complex128两种复数类型,针对complex64复数的实部和虚部均使用float32,针对complex128复数的实部和虚部均使用float64
字面量:
- 十进制表示法:1 + 2i,, i*i = -1, 1为实部,2为虚部
常用函数:
- complex: 工厂函数,通过两个参数创建一个复数
- real:用于获取复数的实部
- imag: 用于获取复数的虚部
常用包
- math/cmplx
字符串类型
Go语言内置了字符串类型,使用string表示
字面量:
- 可解析字符串:通过双引号(")来创建,不能包含多行,支持特殊字符转义序列
- 原生字符串:通过反引号(`)来创建,可包含多行,不支持特殊字符转义序列
特殊字符:
- \\:反斜线
- \':单引号
- \":双引号
- \a:响铃
- \b:退格
- \f:换页
- \n:换行
- \r:回车
- \t:制表符
- \v:垂直制表符
- \ooo:3个8位数字给定的八进制码点的Unicode字符(不能超过\377)
- \uhhhh:4个16位数字给定的十六进制码点的Unicode字符
- \Uhhhhhhhh:8个32位数字给定的十六进制码点的Unicode字符
- \xhh:2个8位数字给定的十六进制码点的Unicode字符
常用操作
- 字符串连接:+
- 关系运算符:>、>=、<、<=、==、!=
- 赋值运算符:+=
- 索引:s[index],针对只包含ascii字符的字符串
- 切片:s[start:end] ,针对只包含ascii字符的字符串
常用函数
- len:获取字符串长度(针对只包含ascii字符的字符串)
- string: 将byte或rune数组转换为字符串
使用fmt.Printf进行格式化参数输出,占位符: %s
常用包:
- fmt
- strings
- strconv
- unicode
- unicode/utf8
- bytes
- regex
枚举类型
常使用iota生成器用于初始化一系列相同规则的常量,批量声明常量的第一个常量使用iota进行赋值,此时iota被重置为0,其他常量省略类型和赋值,在每初始化一个常量则加1
指针类型
每个变量在内存中都有对应存储位置(内存地址),可以通过&运算符获取。指针是用来存储变量地址的变量
- 声明
指针声明需要指定存储地址中对应数据的类型,并使用*作为类型前缀。指针变量声明后会被初始化为nil,表示空指针
- 初始化
使用&运算符+变量初始化:&运算获取变量的存储位置来初始化指针变量
使用new函数初始化:new函数根据数据类型申请内存空间并使用零值填充,并返回申请空间地址
- 操作
可通过*运算符+指针变量名来访问和修改对应存储位置的值
- 指针的指针
用来存储指针变量地址的变量叫做指针的指针