Go 运算符
在 Go 语言(Golang)中,运算符用于执行各种计算和逻辑操作。Go 支持以下几类运算符:
算术运算符
用于执行数学计算,如加减乘除等:
运算符 | 说明 | 示例(a=10, b=4) |
+ | 加法 | a + b 结果 14 |
- | 减法 | a - b 结果 6 |
* | 乘法 | a * b 结果 40 |
/ | 除法 | a / b 结果 3(整除) |
% | 取余 | a % b 结果 2 |
注意:
"/" 进行整数除法时,结果也是整数,如 10 / 3 结果是 3 而不是 3.3333。
想要得到浮点数,需转换类型:float64(a) / float64(b)。
关系运算符(比较运算符)
用于比较两个值,返回 true 或 false:
运算符 | 说明 | 示例(a=10, b=4) |
== | 是否相等 | a == b 结果 false |
!= | 是否不相等 | a != b 结果 true |
> | 大于 | a > b 结果 true |
< | 小于 | a < b 结果 false |
>= | 大于或等于 | a >= b 结果 true |
<= | 小于或等于 | a <= b 结果 false |
逻辑运算符
用于布尔逻辑操作:
运算符 | 说明 | 示例(a=true, b=false) |
&& | 逻辑与(AND) | a && b 结果 false |
|| | 逻辑或(OR) | a || b 结果 true |
! | 逻辑非(NOT) | !a 结果 false |
位运算符
用于二进制位操作:
运算符 | 说明 | 示例(a=5(101), b=3(011)) |
& | 按位与(AND) | a & b 结果 1(101& 011 = 001) |
| | 按位或(OR) | a | b 结果 7(101 & 011 = 111) |
^ | 按位异或(XOR) | a ^ b 结果 6(101 ^ 011 = 110) |
<< | 左移(左移 n 位,相当于乘以 2^n) | a << 3 结果 40(即5*2^3 = 40) |
>> | 右移(左移 n 位,相当于乘以 2^n) | a >> 1 结果 2(即5/2^1 = 2) |
&^ | 按位清除(AND NOT) | a &^ b 结果 4 (101 &^ 011 = 100) |
赋值运算符
用于给变量赋值:
运算符 | 说明 | 使用示例 (a = 10) |
= | 直接赋值 | a = 10 |
+= | 加法赋值 | a -= 2(a = a - 2) |
-= | 减法赋值 | a *= 4(a = a * 4) |
*= | 乘法赋值 | a *= 4(a = a * 4) |
/= | 除法赋值 | a /= 2(a = a / 2) |
%= | 取余赋值 | a %= 3(a = a % 3) |
&= | 按位与赋值 | a &= 2(a = a & 2) |
|= | 按位或赋值 | a |= 2(a = a | 2) |
^= | 按位异或赋值 | a ^= 5(a = a ^ 5) |
<<= | 左移赋值 | a <<= 1(a = a << 1) |
>>= | 右移赋值 | a >>= 1(a = a >> 1) |
其他运算符
运算符 | 说明 | 示例 |
& | 取地址运算符 | &a 取变量 a 的地址 |
* | 指针解引用 | *p 取指针 p 指向的值 |
:= | 短变量声明 | a := 10 |
特别注意事项:
1. Go 语言中运算符的优先级是固定的,可以使用括号 `()` 来改变运算顺序;
2. 位运算符通常用于底层编程和性能优化;
3. 在进行除法运算时要注意除数不能为 0;
4. 使用自增自减运算符时要注意它们只能作为语句使用,不能用在表达式中;
5. Go 不支持三元运算符 `?:`;
6. 自增(++)和自减(--)是语句而不是表达式,只能单独使用
7. 在除法运算中,如果两个操作数都是整数,结果也是整数
8. Go 支持指针运算符:
- `&` 取地址运算符
- `*` 指针解引用运算符