算术运算符
运算符 |
术语 |
示例 |
结果 |
+ |
加 |
10 + 5 |
15 |
- |
减 |
10 - 5 |
5 |
* |
乘 |
10 * 5 |
50 |
/ |
除 |
10 / 5 |
2 |
% |
取模(取余) |
10 % 3 |
1 |
++ |
后自增,没有前自增 |
a=0; a++ |
a=1 |
-- |
后自减,没有前自减 |
a=2; a-- |
a=1 |
关系运算符
运算符 |
术语 |
示例 |
结果 |
== |
相等于 |
4 == 3 |
false |
!= |
不等于 |
4 != 3 |
true |
< |
小于 |
4 < 3 |
false |
> |
大于 |
4 > 3 |
true |
<= |
小于等于 |
4 <= 3 |
false |
>= |
大于等于 |
4 >= 1 |
true |
逻辑运算符
运算符 |
术语 |
示例 |
结果 |
|
|
|
|
! |
非 |
!a |
如果a为假,则!a为真;如果a为真,则!a为假。 |
|
|
|
|
&& |
与 |
a && b |
如果a和b都为真,则结果为真,否则为假。 |
|
|
|
|
\ |
\ |
|
或 |
a \ |
\ |
b |
如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
位运算符
运算符 |
术语 |
说明 |
示例 |
|
|
& |
按位与 |
参与运算的两数各对应的二进位相与 |
60 & 13 结果为12 |
|
|
\ |
|
按位或 |
参与运算的两数各对应的二进位相或 |
60 \ |
13 结果为61 |
^ |
异或 |
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1 |
60 ^ 13 结果为240 |
|
|
<< |
左移 |
左移n位就是乘以2的n次方。 左边丢弃,右边补0。 |
4 << 2 结果为16 |
|
|
>> |
右移 |
右移n位就是除以2的n次方。 右边丢弃,左边补位。 |
4 >> 2 结果为1 |
|
|
赋值运算符
运算符 |
说明 |
示例 |
|
|
|
= |
普通赋值 |
c = a + b 将 a + b 表达式结果赋值给 c |
|
|
|
+= |
相加后再赋值 |
c += a 等价于 c = c + a |
|
|
|
-= |
相减后再赋值 |
c -= a 等价于 c = c - a |
|
|
|
*= |
相乘后再赋值 |
c *= a 等价于 c = c * a |
|
|
|
/= |
相除后再赋值 |
c /= a 等价于 c = c / a |
|
|
|
%= |
求余后再赋值 |
c %= a 等价于 c = c % a |
|
|
|
<<= |
左移后赋值 |
c <<= 2 等价于 c = c << 2 |
|
|
|
>>= |
右移后赋值 |
c >>= 2 等价于 c = c >> 2 |
|
|
|
&= |
按位与后赋值 |
c &= 2 等价于 c = c & 2 |
|
|
|
^= |
按位异或后赋值 |
c ^= 2 等价于 c = c ^ 2 |
|
|
|
\ |
= |
按位或后赋值 |
c \ |
= 2 等价于 c = c \ |
2 |
其他运算符
运算符 |
术语 |
示例 |
说明 |
& |
取地址运算符 |
&a |
变量a的地址 |
* |
取值运算符 |
*a |
指针变量a所指向内存的值 |
运算符优先级
在Go语言中,一元运算符拥有最高的优先级,二元运算符的运算方向均是从左至右。
下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:
优先级 |
运算符 |
|
|
7 |
^ ! |
|
|
6 |
*** / % <<>>& &^** |
|
|
5 |
**+ - \ |
^** |
|
4 |
== != <<= >= > |
|
|
3 |
<- |
|
|
2 |
&& |
|
|
1 |
**\ |
\ |
** |
当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。