布尔类型
true false
布尔型数据只有 true(真)和 false(假)两个值
- 布尔类型变量的默认值为false
- Go 语言中不允许将整型强制转换为布尔型
- 布尔型无法参与数值运算,也无法与其他类型进行转换
go
package main
import "fmt"
func main() {
var b bool
fmt.Println(b) //false 没有初始化,默认为false
b1 := true
fmt.Println(b1) //true
b = 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 | 双精度浮点数,默认浮点类型(精度更高,推荐优先使用) |
特殊类型
go
byte // uint8 的别名
rune // int32 的别名,表示 Unicode 码点
这两个后面的字符型会讲。
字符型
分为单字节字符(byte)和多字节字符(rune):
go
package main
import "fmt"
func main() {
var a byte = 'a'
var b byte = 97
fmt.Println(a) //97
fmt.Println(b) //97
//直接打印都是输出数字
fmt.Printf("%c\n", a) //a
fmt.Printf("%c\n", b) //b
//汉字一般占2个字节以上,所以是多字节字符
var y rune = '咬'
fmt.Printf("%c\n", y) //咬
}
- 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值
- 可以直接给某个变量赋一个数字,然后按格式化输出时 %c ,会输出该数字对应的 unicode 字符
- 字符类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码。
字符串
string
go
package main
import "fmt"
func main() {
var s string = "Y_Yao"
fmt.Println(s) // Y_Yao
}
转义字符
go
package main
import "fmt"
func main() {
// 1. 常见转义字符示例
fmt.Println("=== 常见转义字符 ===")
fmt.Print("Hello,\tWorld!\n") // Hello, World!
fmt.Println("Path: C:\\Users\\Admin") // Path: C:\Users\Admin
fmt.Println("He said, \"Go is great!\"") // He said, "Go is great!"
// 2. 进制表示示例
fmt.Println("\n=== 进制表示 ===")
fmt.Println("\\x41:", "\x41") // A
fmt.Println("\\u0041:", "\u0041") // A
fmt.Println("\\U00000041:", "\U00000041") // A
fmt.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' |