Skip to content

运算符

官方定义的所有运算符

1
2
3
4
5
6
+    &     +=    &=     &&    ==    !=    (    )
-    |     -=    |=     ||    <     <=    [    ]
*    ^     *=    ^=     <-    >     >=    {    }
/    <<    /=    <<=    ++    =     :=    ,    ;
%    >>    %=    >>=    --    !     ...   .    :
     &^          &^=

算术运算符

运算符 描述
+
-
*
/
% 求余

Go 中 ++-- 是单独的语句,不是运算符。即 a++ 后面不能有其他东西了,且只有后置,没有前置

1
2
3
4
5
6
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 || 左到右
赋值 = += -= *= /= %= >>= <<= &= ^= 右到左
逗号 , 左到右