一、概述

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
Categories: go

0 Comments

发表评论

Avatar placeholder

邮箱地址不会被公开。 必填项已用*标注