运算符
官方定义的所有运算符
| + & += &= && == != ( )
- | -= |= || < <= [ ]
* ^ *= ^= <- > >= { }
/ << /= <<= ++ = := , ;
% >> %= >>= -- ! ... . :
&^ &^=
|
算术运算符
| 运算符 |
描述 |
| + |
加 |
| - |
减 |
| * |
乘 |
| / |
除 |
| % |
求余 |
Go 中 ++ 和 -- 是单独的语句,不是运算符。即 a++ 后面不能有其他东西了,且只有后置,没有前置
| func main() {
a := 10
a++ // 正确,a的值为11
a++ + 10 // 错误
++a // 错误,只有后置自增和后置自减
}
|
关系运算符
| 运算符 |
描述 |
| == |
等于 |
| != |
不等于 |
| > |
大于 |
| >= |
大于等于 |
| < |
小于 |
| <= |
小于等于 |
逻辑运算符
| 运算符 |
描述 |
| && |
逻辑与 |
| || |
逻辑或 |
| ! |
逻辑非 |
位运算符
| 运算符 |
含义 |
|
| & |
按位与 |
两位均为1才为1 |
| | |
按位或 |
两位有一个为1就为1 |
| ^ |
按位异或 |
两位不同则为1 |
| << |
左移 |
左移n位 == 乘以2的n次方,高位丢弃,低位补0 |
| >> |
右移 |
右移n位 == 除以2的n次方,高位补0,低位丢弃 |
赋值运算符
| 运算符 |
描述 |
| = |
将右边赋值给左边 |
| += |
相加后赋值 |
| -= |
相减后赋值 |
| *= |
相乘后赋值 |
| /= |
相除后赋值 |
| %= |
求余后赋值 |
| &= |
按位与后赋值 |
| |= |
按位或后赋值 |
| ^= |
按位异或后赋值 |
| <<= |
左移后赋值 |
| >>= |
右移后赋值 |
优先级
从高到低
| 分类 |
描述 |
关联性 |
| 后缀 |
() [] . ++ -- |
左到右 |
| 一元 |
+ - ! ~ ++ -- (type) * & sizeof |
右到左 |
| 乘除 |
* / % |
左到右 |
| 加减 |
+ - |
左到右 |
| 移位 |
<< >> |
左到右 |
| 关系 |
< <= > >= |
左到右 |
| 相等 |
== != |
左到右 |
| 按位AND |
& |
左到右 |
| 按位XOR |
^ |
左到右 |
| 按位OR |
| |
左到右 |
| 逻辑AND |
&& |
左到右 |
| 逻辑OR |
|| |
左到右 |
| 赋值 |
= += -= *= /= %= >>= <<= &= ^= |
右到左 |
| 逗号 |
, |
左到右 |