运算符
官方定义的所有运算符
| + & += &= && == != ( )
- | -= |= || < <= [ ]
* ^ *= ^= <- > >= { }
/ << /= <<= ++ = := , ;
% >> %= >>= -- ! ... . :
&^ &^=
|
算术运算符
运算符 |
描述 |
+ |
加 |
- |
减 |
* |
乘 |
/ |
除 |
% |
求余 |
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 |
|| |
左到右 |
赋值 |
= += -= *= /= %= >>= <<= &= ^= |
右到左 |
逗号 |
, |
左到右 |