Go 语言运算符全解

Go 语言提供了丰富的运算符用于各种操作。本文将按照 一元、二元、三元 分类,同时按照 功能作用 详细说明所有运算符。


一元运算符

一元运算符只需要一个操作数。

运算符 名称 描述 示例
+ 正号 表示正数(默认省略) +10
- 负号 表示负数 -x
! 逻辑非 布尔值取反 !true
^ 按位取反 对整数按位取反(Go特有) ^x
& 取地址 获取变量内存地址 &var
* 解引用 通过指针访问值 *ptr
<- 通道接收 从通道读取数据 <-ch
++ 自增 值增加1(只能作为语句) x++
-- 自减 值减少1(只能作为语句) x--

二元运算符

二元运算符需要两个操作数。

算术运算符

运算符 名称 描述 示例
+ 加法 数字相加或字符串拼接 a + b
- 减法 数字相减 a - b
* 乘法 数字相乘 a * b
/ 除法 数字相除(整数会截断) a / b
% 取模 整数相除的余数 a % b

关系运算符

运算符 名称 描述 示例
== 等于 判断值是否相等 a == b
!= 不等于 判断值是否不等 a != b
< 小于 判断左值是否小于右值 a < b
<= 小于等于 判断左值是否小于等于右值 a <= b
> 大于 判断左值是否大于右值 a > b
>= 大于等于 判断左值是否大于等于右值 a >= b

逻辑运算符

运算符 名称 描述 示例
&& 逻辑与 两条件都为真时返回真 a && b
` ` 逻辑或

位运算符

运算符 名称 描述 示例
& 按位与 对整数按位与操作 a & b
` ` 按位或 对整数按位或操作
^ 按位异或 对整数按位异或操作 a ^ b
&^ 按位清除 清除右操作数为1的位 a &^ b
<< 左移 左操作数按右操作数位数左移 a << b
>> 右移 左操作数按右操作数位数右移 a >> b

赋值运算符

运算符 描述 等价于 示例
= 简单赋值 - a = b
+= 相加后赋值 a = a + b a += b
-= 相减后赋值 a = a - b a -= b
*= 相乘后赋值 a = a * b a *= b
/= 相除后赋值 a = a / b a /= b
%= 取模后赋值 a = a % b a %= b
&= 按位与后赋值 a = a & b a &= b
` =` 按位或后赋值 `a = a
^= 按位异或后赋值 a = a ^ b a ^= b
&^= 按位清除后赋值 a = a &^ b a &^= b
<<= 左移后赋值 a = a << b a <<= b
>>= 右移后赋值 a = a >> b a >>= b

其他运算符

运算符 名称 描述 示例
& 取地址 获取变量地址 &var
* 指针解引用 访问指针指向的值 *ptr
<- 通道发送 向通道发送数据 ch <- x

三元运算符

Go 没有 传统的三元运算符(如 condition ? a : b),但可以通过 if-else 实现类似功能:

result := if condition { a } else { b }  // Go 1.18+ 泛型提案中的可能语法
// 当前实际写法:
var result T
if condition {
result = a
} else {
result = b
}

运算符优先级

从高到低排列:

优先级 运算符
1 () [] -> . ++ --
2 * / % << >> & &^
3 + - `
4 == != < <= > >=
5 &&
6 `

注意:可以通过括号 () 显式改变运算顺序。


通过本文,您应该已经全面了解了 Go 语言中的所有运算符及其用法。建议结合实践加深理解!