布尔类型
true false
布尔型数据只有 true(真)和 false(假)两个值
- 布尔类型变量的默认值为false
- Go 语言中不允许将整型强制转换为布尔型
- 布尔型无法参与数值运算,也无法与其他类型进行转换
packagemainimport"fmt"funcmain(){varbboolfmt.Println(b)//false 没有初始化,默认为falseb1:=truefmt.Println(b1)//trueb=1//编译报错,bool类型无法和其他类型互相转换}数值类型
整数类型
- 默认的数字定义类型是int类型
- 带个u就是无符号,只能存正整数
- 后面的数字就是2进制的位数
- uint8还有一个别名 byte, 一个字节=8个bit位
- int类型的大小取决于所使用的平台
| 类型 | 符号性 | 位数 | 取值范围(十进制) | 说明 |
|---|---|---|---|---|
| int8 | 有符号 | 8位 | -128 ~ 127 | 最小的有符号整数,适合存储小范围整数(如状态码) |
| int16 | 有符号 | 16位 | -32768 ~ 32767 | |
| int32 | 有符号 | 32位 | -2³¹ ~ 2³¹-1 (约-21亿~21亿) | 对应rune(Unicode码点的别名) |
| int64 | 有符号 | 64位 | -2⁶³ ~ 2⁶³-1 (约-922亿亿~922亿亿) | 适合存储大范围整数(如时间戳、大计数) |
| uint8 | 无符号 | 8位 | 0 ~ 255 | 对应byte(ASCII字符的别名) |
| uint16 | 无符号 | 16位 | 0 ~ 65535 | |
| uint32 | 无符号 | 32位 | 0 ~ 4294967295 | |
| uint64 | 无符号 | 64位 | 0 ~ 18446744073709551615 | |
| int | 有符号 | 取决于系统(32位系统32位,64位系统64位) | 同int32或int64 | 最常用的整数类型,适合多数场景(如循环索引、普通计数) |
| uint | 无符号 | 同int的位数 | 同uint32或uint64 | 用于存储非负整数,需注意与int的类型不兼容(不能直接运算) |
| uintptr | 无符号 | 同指针位数(通常64位) | 取决于系统 | 用于底层编程(如指针运算),存储指针的数值形式(非安全指针) |
浮点型
Go语言支持两种浮点型数:float32 和 float64
- float32 的浮点数的最大范围约为3.4e38,可以使用常量定义:
math.MaxFloat32 - float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:
math.MaxFloat64
如果没有显式声明,则默认是float64
| 类型 | 位数 | 精度(有效数字) | 范围(约) | 说明 |
|---|---|---|---|---|
float32 | 32位 | 6-7位 | ±1.4e-45 ~ ±3.4e38 | 单精度浮点数,适合内存敏感场景(精度要求低) |
float64 | 64位 | 15-17位 | ±4.9e-324 ~ ±1.8e308 | 双精度浮点数,默认浮点类型(精度更高,推荐优先使用) |
特殊类型
byte// uint8 的别名rune// int32 的别名,表示 Unicode 码点这两个后面的字符型会讲。
字符型
分为单字节字符(byte)和多字节字符(rune):
packagemainimport"fmt"funcmain(){varabyte='a'varbbyte=97fmt.Println(a)//97fmt.Println(b)//97//直接打印都是输出数字fmt.Printf("%c\n",a)//afmt.Printf("%c\n",b)//b//汉字一般占2个字节以上,所以是多字节字符varyrune='咬'fmt.Printf("%c\n",y)//咬}- 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值
- 可以直接给某个变量赋一个数字,然后按格式化输出时 %c ,会输出该数字对应的 unicode 字符
- 字符类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码。
字符串
string
packagemainimport"fmt"funcmain(){varsstring="Y_Yao"fmt.Println(s)// Y_Yao}转义字符
packagemainimport"fmt"funcmain(){// 1. 常见转义字符示例fmt.Println("=== 常见转义字符 ===")fmt.Print("Hello,\tWorld!\n")// Hello, World!fmt.Println("Path: C:\\Users\\Admin")// Path: C:\Users\Adminfmt.Println("He said, \"Go is great!\"")// He said, "Go is great!"// 2. 进制表示示例fmt.Println("\n=== 进制表示 ===")fmt.Println("\\x41:","\x41")// Afmt.Println("\\u0041:","\u0041")// Afmt.Println("\\U00000041:","\U00000041")// Afmt.Println("\\101:","\101")// A (八进制)// d使用反引号(原始字符串),注意此时里面无法再使用转义字符multi2:=`Line 1 Line 2 Line 3`fmt.Println("\n使用反引号:")fmt.Println(multi2)}| 类别 | 转义字符 | 说明 | 示例输出 |
|---|---|---|---|
| 换行回车 | \n | 换行符 | 多行文本 |
\r | 回车符 | 行首开始 | |
| 制表对齐 | \t | 水平制表 | 列对齐 |
\v | 垂直制表 | 垂直对齐 | |
| 特殊符号 | \\ | 反斜杠 | \ |
\" | 双引号 | " | |
\' | 单引号 | ' | |
| 控制字符 | \a | 响铃/警告 | 终端响铃 |
\b | 退格 | 回退字符 | |
\f | 换页 | 打印机换页 | |
| 进制表示 | \xHH | 十六进制(2位) | \x41→ ‘A’ |
\uHHHH | Unicode(4位) | \u0041→ ‘A’ | |
\UHHHHHHHH | Unicode(8位) | \U00000041→ ‘A’ | |
\ooo | 八进制(3位) | \101→ ‘A’ |