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 ||

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

相关推荐
福大大架构师每日一题8 小时前
ragflow v0.27.0 发布:Go 后端全面对齐、智能体搜索与知识编译大升级,超全更新解析
开发语言·后端·golang
JavaPub-rodert8 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
剩下了什么1 天前
float32 与 float64 精度陷阱:如何在 Go 中避免错误使用
开发语言·后端·golang
ttwuai1 天前
Go 后台接入 SSO 后菜单正常但接口 403,怎么排查权限链路?
开发语言·后端·golang
PC2005-cloud1 天前
Go学习笔记:基本概念与项目结构——GOPATH、Go Modules 与常用命令
笔记·学习·golang
ttwuai1 天前
Go 后台图片上传到对象存储后,预览 403/404 怎么排查?
开发语言·golang
名字还没想好☜1 天前
Go 1.23 range-over-func 迭代器实战:自定义可迭代类型、提前退出与惰性求值
开发语言·后端·golang·go·迭代器
灯澜忆梦1 天前
【基于GO的Web开发4】html/template 模板语法
后端·golang·html
圣殿骑士-Khtangc1 天前
Go-Kubernetes-Client-go编程从Pod管理到CRD开发
golang
PC2005-cloud1 天前
Go学习笔记:错误处理——没有异常,只有 error
笔记·学习·golang