一、概述
Go语言提供了算术、关系、逻辑、位、赋值运算符。
二、算术运算符
- + 相加
- – 相减
- * 相乘
- / 相除
- % 求余
- ++ 自增
- — 自减
- 整数与浮点数进行运算,会将整数转化为浮点数,再运算。
- 两个整数相除,结果是整数,取整数部分。5/3结果是1。
三、关系运算符
- == 检查两个值是否相等,如果相等返回true,否则返回false
- != 检查两个值是否不等,如果不等返回true,否则返回false
- > 检查左边是否大于右边,如果是返回true,否则返回false
- < 检查左边是否小于右边,如果是返回true,否则返回false
- >= 检查左边是否大于等于右边,如果是返回true,否则返回false
- <= 检查左边是否小于等于右边,如果是返回true,否则返回false
四、逻辑运算符
- && 逻辑与,参与运算的两个关系必须同时成立,结果为true,否则为false
- || 逻辑或,参与运算的两个关系成立一个(或都成立)结果为true,全部关系为false,结果为false。
- || 逻辑或,参与运算的两个关系成立一个(或都成立)结果为true,全部关系为false,结果为false。
①&&
true && true = true
true && false = false
false && true = false
false && false = false
②||
true || true = true
true || false = true
false || true = true
false || false = false
③!
!true = false
!false = true
五、位运算符
- & 按位与运算
- | 按位或运算
- ^ 按位异或运算
- << 左移运算符,由”<<“右边的数指定位移的位数,高位丢弃,地位补0。左移n位就是乘以2的n次方。
- >> 右移运算符,”>>”右边的数指定移动的位数,低位舍弃,高位补0。右移n位就是除以2的n次方。
- 总结:用于运算构成的每个二进制位,就是位上0,1的运算。
二进制转十进制
10101 2^4+2^2+2^0 16+4+1 21
十进制转二进制
99 64+32+2+1 2^6+2^5+2^1+2^0 1100011
按位进行与运算(全为1,才得1)
r1 := 5 & 99
5 0000101
99 1100011
0000001 ---> 1
按位进行或运算(只有1,就得1)
r1 := 5 | 99
5 0000101
99 1100011
1100111 ---> 2^6+2^5+2^2+2^1+2^0=64+32+4+2+1=103
按位进行异或运算(上下不同,就得1)
r1 := 5 ^ 99
5 0000101
99 1100011
1100110 --->2^6+2^5+2^2+2^1=64+32+4+2=102
按位向左移动
r1 := 5 << 2
5 ---> 101
移动后 ---> 10100 2^4+2^2=20
按位向右移动
r1 := 5 << 1
5 ---> 101
移动后 ---> 10 2^1=2
比较清除
以前面的值为基准,让前面的二进制和后面的值的二进制进行比较,如果两个值位置都为1,则将前面的1置0
r1 := 5 &^ 99
5 0000101
99 1100011
0000100 ---> 2^2=4




六、赋值运算符
- = 简单的赋值运算符,将一个表达式的值赋给一个左值
- += 相加后再赋值
- -= 相减后再赋值
- *= 相乘后再赋值
- /= 相除后再赋值
- %= 求余后再赋值
- <<= 左移后赋值
- >>= 右移后赋值
- &= 按位与后赋值
- ^= 按位异或后赋值
- != 按位或后赋值
age := 10
age = 9
age = age + 9 // age+=9
age = age - 9 // age-=9
age = age * 9 // age*=9

七、运算符的优先级
Precedence Operator
5 * / % << >> & &^
4 = - ! ^
3 == != < <= > >=
2 &&
1 ||
var := 3 + 2 * 2
0 Comments