运算符
算数运算符
加减乘除。
注意:
1、两数相除,如果运算的数都是整数,那么结果会舍弃小数位,仅保留整数位
2、取余,余数 = 被除数 - (被除数/除数) * 除数
3、自增(++)、自减(--)在Go语言中是单独的语句,而非运算符。也就是说不能赋值给左值。另外,没有前置的自增、自减,都是放在后面的。
var a = 10
var b = 5
// 加
fmt.Println(a + b)
// 减
fmt.Println(a - b)
// 乘
fmt.Println(a * b)
// 除
fmt.Println(a / b)
// 模
fmt.Println(a % b)
关系运算符
var a = 10
var b = 5
var c = 5
fmt.Println(a == b)
fmt.Println(b == c)
fmt.Println(a != b)
fmt.Println(a > b)
fmt.Println(a >= b)
fmt.Println(a < b)
fmt.Println(a <= b)
逻辑运算符
var a = false
var b = true
fmt.Println(a && b)
fmt.Println(a || b)
fmt.Println(!b)
赋值运算符
var a = 21
var c int
// 以下摘抄自菜鸟学院runoob.com
c = a
fmt.Printf("第 1 行 - = 运算符实例,c 值为 = %d\n", c )
c += a
fmt.Printf("第 2 行 - += 运算符实例,c 值为 = %d\n", c )
c -= a
fmt.Printf("第 3 行 - -= 运算符实例,c 值为 = %d\n", c )
c *= a
fmt.Printf("第 4 行 - *= 运算符实例,c 值为 = %d\n", c )
c /= a
fmt.Printf("第 5 行 - /= 运算符实例,c 值为 = %d\n", c )
c = 200;
c <<= 2
fmt.Printf("第 6行 - <<= 运算符实例,c 值为 = %d\n", c )
c >>= 2
fmt.Printf("第 7 行 - >>= 运算符实例,c 值为 = %d\n", c )
c &= 2
fmt.Printf("第 8 行 - &= 运算符实例,c 值为 = %d\n", c )
c ^= 2
fmt.Printf("第 9 行 - ^= 运算符实例,c 值为 = %d\n", c )
c |= 2
fmt.Printf("第 10 行 - |= 运算符实例,c 值为 = %d\n", c )
位运算符
位运算,操作的是内在的二进制。
| 运算符 | 描述 |
|---|---|
| & | 按位与, 即都为1才为1 |
| | | 按位或,有1则1 |
| ^ | 按位异或,相异则1 |
| << | 左移,即乘以2的n次方。移几位,n就是几 |
| >> | 右移,即除以2的n次方。移几位,n就是几 |
左乘右除
位运算,例如:
数字1, 内存中的存储可能是 0001
数字7,内存中的存储可能是 0111
那么
| & | 0001 |
| | | 0111 |
| ^ | 0110 |
| << | 数字1左移2位。0100 |
| >> | 数字7右移2位。0001 |
var a int = 1
var b int = 7
fmt.Println("a & b")
fmt.Println("a | b")
fmt.Println("a ^ b")
fmt.Println("a << 2")
fmt.Println("b >> 2")