Go语言中的运算符汇总

一、算术运算符

运算符 含义 示例
+ 加 a + b
- 减 a - b
* 乘 a * b
/ 除 a / b
% 取余 a % b

注意:Go 中 / 对整数做 截断除法(向零取整)。

二、关系 / 比较运算符

运算符 含义
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

Go 中不同类型不能比较,例如 int(1) == int64(1) 会编译报错。

三、逻辑运算符(Logical Operators)

运算符 含义
&& 逻辑 AND
|| 逻辑或 OR
! 逻辑 NOT

短路求值:&& 遇 false 停止,|| 遇 true 停止。

四、位运算符(Bitwise Operators)

运算符 含义 示例
& 按位与 a & b
| 按位或(OR) a | b
^ 按位异或 a ^ b
&^ 按位清零 (bit clear) a &^ b
<< 左移 a << 1
>> 右移 a >> 1

Go 特有:&^ (bit clear)
a &^ b 表示:把 b 为 1 的位置从 a 中清掉。

示例:

Go 复制代码
a := 6  // 110
b := 3  // 011
fmt.Println(a &^ b) // 输出 4(100)

五、赋值运算符

Go 支持组合赋值:

运算符 含义
= 赋值
+= 加后赋值
-= 减后赋值
*= 乘后赋值
/= 除后赋值
%= 取余后赋值
&= 按位与后赋值
` =`
^= 按位异或后赋值
<<= 左移后赋值
>>= 右移后赋值
&^= 清零后赋值

六、指针相关运算符(Pointer Operators)

运算符 含义 示例
& 取变量地址 p := &x
* 取指针指向的值 y := *p

注意:Go 没有 C 那种复杂的指针运算。

七、通道运算符(Channel Operators)

运算符 含义
<- 通道接收 / 发送

示例:

Go 复制代码
ch <- 1   // 发送
x := <-ch // 接收

八、其他重要符号(严格意义上不是运算符但常被问)

符号 含义
:= 短变量声明
... 可变参数、切片展开
. 访问成员
() 调用函数 / 调整优先级
[] 切片 / 数组索引
{} 代码块或结构体字面量

九、运算符优先级

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级 运算符
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||

可以通过使用括号来临时提升某个表达式的整体运算优先级。

相关推荐
FungLeo9 小时前
成为全栈·Go 后端篇·契约一致性与差分测试:两套实现如何互相校验
golang·node.js·go·合约测试·差分测试·成为全栈·api兼容
老王IT9 小时前
Go开发环境搭建(window操作系统)
开发语言·后端·golang
利威尔xu14 小时前
Go IM 源码实战(7):断线三天重连,水位算错就漏消息
redis·后端·微服务·面试·golang
行思理1 天前
go语言学习难度及适合学习的人群
开发语言·学习·golang
@大迁世界1 天前
告别 Go,拥抱 Rust
开发语言·golang·rust
喵了几个咪1 天前
GoWind ShortPlay 拆解:不用模型的推荐闭环——埋点回流、三路召回与已看去重
开发语言·后端·微服务·golang·gowind
喵了几个咪1 天前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
FungLeo1 天前
成为全栈·Go 后端篇·用 Go 重写分层架构:领域包、装配根与最小抽象
golang·go·领域驱动设计·gorm·分层架构·成为全栈
北冥you鱼1 天前
Go 语言 Ticker 定时任务全解析:原理、陷阱与最佳实践
开发语言·数据库·golang
我不会起名字3222 天前
Go 服务升级 Go 1.2x 后 P99 变差:GMP 调度相关的 3 个变化
golang·go·gmp·调度·gomaxprocs