golang运算符
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+ 泛型提案中的可能语法 |
运算符优先级
从高到低排列:
| 优先级 | 运算符 |
|---|---|
| 1 | () [] -> . ++ -- |
| 2 | * / % << >> & &^ |
| 3 | + - ` |
| 4 | == != < <= > >= |
| 5 | && |
| 6 | ` |
注意:可以通过括号
()显式改变运算顺序。
通过本文,您应该已经全面了解了 Go 语言中的所有运算符及其用法。建议结合实践加深理解!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Static Blog!
评论
