运算符
运算符一览
| 算术运算符 | 赋值运算符 | 关系运算符 | 逻辑运算符 | 位运算符 | 取地址符 | 取数据符 |
|---|---|---|---|---|---|---|
| + | = | == | &,按位与 | & | * | |
| - | += | != | &&,短路与 | |,按位或 | ||
| * | -= | > | ~,按位非(按位取反) | |||
| / | *= | < | ||,短路或 | ^,按位异或 | ||
| % | /= | >= | !,逻辑非 | << | ||
| ++ | %= | <= | >> | |||
| -- | &=,按位与赋值 | |||||
| |= | ||||||
| ^= | ||||||
| ~= | ||||||
| <<= | ||||||
| >>= | ||||||
注意:
- Go无?;三目条件运算符
- 位运算符分为位逻辑运算符和位移运算符两类
- Go的自增自减均为后自增自减形式,但实际作用是前自增自减,且不能以a := b++的形式使用
运算符优先级
Go语言运算符优先级和结合性一览表
| 优先级 | 分类 | 运算符 | 结合性 |
|---|---|---|---|
| 1 | 逗号运算符 | , | 从左到右 |
| 2 | 赋值运算符 | =、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>= | 从右到左 |
| 3 | 逻辑或 | || | 从左到右 |
| 4 | 逻辑与 | && | 从左到右 |
| 5 | 按位或 | | | 从左到右 |
| 6 | 按位异或 | ^ | 从左到右 |
| 7 | 按位与 | & | 从左到右 |
| 8 | 相等/不等 | ==、!= | 从左到右 |
| 9 | 关系运算符 | <、<=、>、>= | 从左到右 |
| 10 | 位移运算符 | <<、>> | 从左到右 |
| 11 | 加法/减法 | +、- | 从左到右 |
| 12 | 乘法/除法/取余 | *(乘号)、/、% | 从左到右 |
| 13 | 单目运算符 | !、*(指针)、&、++、–、+(正号)、-(负号) | 从右到左 |
| 14 | 后缀运算符 | ()、[]、-> | 从左到右 |