本篇基于 Go 1.25.1 版本,带你系统掌握算术、关系、逻辑、位运算,吃透优先级与表达式规则!
一、运算符总分类(清晰表格)
| 分类 | 运算符 | 说明 |
|---|---|---|
| 算术运算符 | + - * / % ++ -- | 数学计算 |
| 关系运算符 | == != > < >= <= | 比较判断 |
| 逻辑运算符 | `&& | |
| 赋值运算符 | `= += -= *= /= %= &= | = ^= <<= >>=` |
| 位运算符 | `& | ^ << >> &^` |
二、算术运算符(最常用)
支持加减乘除、取余、自增自减。
package main
import "fmt"
func main() {
a, b := 10, 3
fmt.Println("加法:", a+b) // 13
fmt.Println("减法:", a-b) // 7
fmt.Println("乘法:", a*b) // 30
fmt.Println("除法:", a/b) // 3(整数除法)
fmt.Println("取余:", a%b) // 1
// 自增、自减(只能单独使用)
a++
fmt.Println("自增后 a:", a) // 11
b--
fmt.Println("自减后 b:", b) // 2
}三、关系运算符(判断用)
结果一定是 true / false。
func main() {
x, y := 5, 8
fmt.Println("等于:", x == y) // false
fmt.Println("不等于:", x != y) // true
fmt.Println("大于:", x > y) // false
fmt.Println("小于:", x < y) // true
fmt.Println("大于等于:", x >= y) // false
fmt.Println("小于等于:", x <= y) // true
}四、逻辑运算符(多条件判断)
用于布尔值之间的逻辑运算。
func main() {
a, b := true, false
fmt.Println("逻辑与 &&:", a && b) // false
fmt.Println("逻辑或 ||:", a || b) // true
fmt.Println("逻辑非 !:", !a) // false
}五、赋值运算符
func main() {
n := 2
n += 3 // n = n + 3
fmt.Println(n) // 5
n *= 2 // n = n * 2
fmt.Println(n) // 10
}六、位运算符(二进制操作)
对二进制位进行计算,高效底层运算。
func main() {
// 2 → 10, 3 → 11
fmt.Println("按位与 &:", 2&3) // 10 & 11 = 10 → 2
fmt.Println("按位或 |:", 2|3) // 11 → 3
fmt.Println("按位异或 ^:", 2^3) // 01 → 1
fmt.Println("左移 <<:", 2<<1) // 10 → 100 = 4
fmt.Println("右移 >>:", 2>>1) // 10 → 1 = 1
}七、运算符优先级(必背)
优先级从高到低:
- 1.
*/%<<>>& - 2.
+-|^ - 3.
==!=<><=>= - 4.
&& - 5.
||
口诀:乘除位运算 → 加减或异或 → 比较 → 与 → 或
八、完整可运行 Demo(全覆盖)
main.go 可直接本地运行:
package main
import "fmt"
func main() {
fmt.Println("=== 算术运算 ===")
a, b := 10, 3
fmt.Println("a + b =", a+b)
fmt.Println("a / b =", a/b)
fmt.Println("a % b =", a%b)
a++
fmt.Println("a++ =", a)
fmt.Println("\n=== 关系运算 ===")
fmt.Println("a > b =", a > b)
fmt.Println("a == b =", a == b)
fmt.Println("\n=== 逻辑运算 ===")
fmt.Println("true && false =", true && false)
fmt.Println("true || false =", true || false)
fmt.Println("\n=== 位运算 ===")
fmt.Println("2 & 3 =", 2&3)
fmt.Println("2 << 1 =", 2<<1)
fmt.Println("\n=== 优先级测试 ===")
fmt.Println("2 + 3 * 4 =", 2+3*4) // 先乘后加 = 14
fmt.Println("(2+3)*4 =", (2+3)*4) // 括号优先 = 20
}运行命令:
go run main.go九、表达式求值规则
- 1. 优先级高先算
- 2. 同级从左到右
- 3. 括号
()优先级最高 - 4. 逻辑运算存在短路:
false && ...直接返回 false,不执行后续
十、新手避坑指南
- 1. 整数除法只保留整数:
10/3=3 - 2. 自增自减是语句,不能赋值:不能写
c = a++ - 3. 比较用
==,赋值用= - 4. 不确定优先级就加括号,最安全
📌 总结
- 1. 算术:+ - * / % ++ --
- 2. 关系:== != > < >= <=
- 3. 逻辑:&& || !
- 4. 位运算:& | ^ << >>
- 5. 优先级:乘除 > 加减 > 比较 > 逻辑
一篇搞定 Go 运算符,新手直接上手写逻辑 ✨
MiaoAll