算数运算符
| 符号 |
名称 |
| + |
加 |
| - |
减 |
| * |
乘 |
| / |
除 |
| % |
余 |
| ++ |
自增 |
| -- |
自减 |
关系运算符
| 符号 |
名称 |
| == |
等于 |
| != |
不等于 |
| > |
大于 |
| < |
小于 |
| >= |
大于等于 |
| <= |
小于等于 |
逻辑运算符
| 符号 |
名称 |
| && |
逻辑与 |
| || |
逻辑或 |
| ! |
逻辑非 |
位运算符
位运算符对整数在内存中的二进制位进行操作
| a | b | a & b | a|b | a ^ b |
|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
赋值运算符
| 符号 |
名称 |
| = |
将表达式结果赋给左值 |
| += |
相加后再赋值 |
| -= |
相减后再赋值 |
| ... |
... |
其他
运算符优先级
可以通过括号来提升某个表达式的整体运算优先级
| 优先级 |
分类 |
运算符 |
结合性 |
| 01 |
逗号运算符 |
, |
从左到右 |
| 02 |
赋值运算符 |
=、+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^= |
从右到左 |
| 03 |
逻辑或 |
|| |
从左到右 |
| 04 |
逻辑与 |
&& |
从左到右 |
| 05 |
按位或 |
| |
从左到右 |
| 06 |
按位异或 |
^ |
从左到右 |
| 07 |
按位与 |
& |
从左到右 |
| 08 |
相等/不等 |
==、!= |
从左到右 |
| 09 |
关系运算符 |
<、<=、>、>= |
从左到右 |
| 10 |
位移运算符 |
<<、>> |
从左到右 |
| 11 |
加法/减法 |
+、- |
从左到右 |
| 12 |
乘法/除法/取余 |
*(乘号)、/、% |
从左到右 |
| 13 |
单目运算符 |
!、*(指针)、& 、++、--、+(正号)、-(负号) |
从右到左 |
| 14 |
后缀运算符 |
( )、[ ]、-> |
从左到右 |
代码示例
package main
import "fmt"
func main() {
var a, b = 5, 3
fmt.Println(a + b)
fmt.Println(a - b)
fmt.Println(a * b)
fmt.Println(a / b)
fmt.Println(a % b)
var s1, s2 = "Hello", "World"
s := fmt.Sprintf("%v", s1+s2)
fmt.Println(s)
var i int
i++
i += 1
i = i + 1
i = i - 1
i -= 1
i--
var v1, v2 = true, false
if v1 && v2 {
fmt.Println("always false")
}
if v1 || v2 {
fmt.Println("always true")
}
if !v1 {
fmt.Println("always false")
}
var n1 = 60
var n2 = 13
fmt.Println(n1 & n2)
fmt.Println(n1 | n2)
fmt.Println(n1 ^ n2)
}