运算

算数运算

整型和浮点型支持 +、-、* 和 /。

整型还支持%(取余数)。

逻辑运算

go 整型,浮点型,string 支持 ==、!=、<、<=、>、>=逻辑运算,逻辑运算的结果会产生bool类型。

//string 逻辑运算 使用的是按字节逐一对比的
"ab" >"c" //false

位运算

二元运算符:

按位与 &:

  1 & 1 // 1
  1 & 0 // 0
  0 & 0 // 0

按位或 |:

  1 | 1 // 1
  1 | 0 // 1
  0 | 0 // 0

按位异或 ^:

  1 ^ 1 // 0
  1 ^ 0 // 1
  0 ^ 0 // 0

位清除 &^:

a &^ b表示把a中,ab都为1的位置为0

0110 &^ 1011 // 0100
1011 &^ 1101 // 0010

一元运算符

按位取反^:

对应位置 0变成1,1变成0。对于正的有符号数,取反会变负数,所以负的有符号数取反都等于1.

^1 // -2
^-3 // 2

位左移 <<: 左移时右侧位补0,移动一位相当于乘以2

  1 << 10 // 等于 1k
  1 << 20 // 等于 1m
  1 << 30 // 等于 1g

位右移 >>: 右移时左侧位补0,移动一位相对于乘以2

39 >>2 // 9
512 >> 2 //128

运算符与优先级

由上至下代表优先级由高到低

优先级     运算符
 8         ()(括号)
 7         ^ !
 6         * / % << >> & &^
 5         + - | ^
 4         == != < <= >= >
 3         <-
 2         &&
 1         ||