7.运算符
最后更新于:2022-04-02 04:43:02
全部运算符、分隔符,以及其他符号。
| + | & | += | &= | && | == | != | ( | ) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|- |\| | -= | \|= | \|\| | <| <= | [ | ]
|* | ^ | *= | ^= | <- | > | >= | { | }|
|/ | << | /= | <<= | ++ | = | := | , | ;|
|% | >> | %= | >>= | -- | ! | ... | . | :|
||&^ || &^=|||||
运算符结合律全部从左到右。
| 优先级 | 运算符 | 说明 |
| --- | --- | --- |
| high | * / & << >> & &^ | |
| | + - \| ^ | |
| | == != < <= < >= | |
| | <- | channel && |
| low | \|\| | |
简单位运算演 。
~~~
0110 & 1011 = 0010 AND 都为 1。
0110 | 1011 = 1111 OR 少 个为 1。
0110 ^ 1011 = 1101 XOR 只能 个为 1。
0110 &^ 1011 = 0100 AND NOT 清除标志位。
~~~
标志位操作。
~~~
a := 0
a |= 1 << 2 // 0000100: 在 bit2 设置标志位。
a |= 1 << 6 // 1000100: 在 bit6 设置标志位
a = a &^ (1 << 6) // 0000100: 清除 bit6 标志位。
~~~
不支持运算符重载。尤其需要注意,"++"、"--" 是语句而非表达式。
~~~
n := 0
p := &n
// b := n++ // syntax error
// if n++ == 1 {} // syntax error
// ++n // syntax error
n++
*p++ // (*p)++
~~~
没有 "~",取反运算也 "^"。
~~~
x := 1
x, ^x // 0001, -0010
~~~
';