算术运算符

  • + 相加
  • - 相减
  • * 相乘
  • /相除
  • % 求余
  • ++ 自增(+1)
  • --自减(-1)

关系运算符

  • == 检查左右两边的值是否相等相等返回true,否则返回false
  • != 检查左右两边的值是否不相等不相等返回true,否则返回false
  • > 检查左边的值是否大于右边的值,大于返回true,否则返回false
  • < 检查左边的值是否小于右边的值,小于返回true,否则返回false
  • >= 检查左边的值是否大于等于右边的值,大于等于返回true,否则返回false
  • <= 检查左边的值是否小于等于右边的值,小于等于返回true,否则返回false

逻辑运算符

  • && 逻辑AND运算符,如果左右两边的结果都为true就返回true,否则返回false
  • || 逻辑OR运算符,如果左右两边有一个结果为true就返回true,否则返回false
  • ! 逻辑NOT运算符,用于取反,如果条件为true就返回false,否则返回true

位运算符

  • & 按位与运算符,左右两边的值的二进位进行运算
  • | 按位或运算符,左右两边的值的二进位进行运算
  • ^ 按位异或运算符,左右两边的值的二进位进行异或运算
  • << 左移运算符,左边的值的各二进位向左移动右边的值位,假如右边的值n,左移n位就是左边的值乘以2的n次方
  • >> 右移运算符,左边的值的各二进位向右移动右边的值位,假如右边的值n,右移n位就是除以2的n次方

赋值运算符

= 简单赋值运算符,将右边的值赋给左边
+= 相加后再赋值,左右两边的值先相加,再将结果赋值给左边
-= 相减后再赋值,左边的值先右边的值,再将结果赋值给左边
*= 相乘后再赋值,左右两边的值先相乘,再将结果赋值给左边
/= 相除后再赋值,左边的值先除以右边的值,再将结果赋值给左边
<<= 左移后再赋值,先将左边的值左移右边的值位,再将结果赋值给左边
>>= 右移后再赋值,先将左边的值右移右边的值位,再将结果赋值给左边
&= 按位后再赋值,想将左右两边的值的二进位进行运算,再将结果赋值给左边
|= 按位后再赋值,想将左右两边的值的二进位进行运算,再将结果赋值给左边
&= 按位异或后再赋值,想将左右两边的值的二进位进行异或运算,再将结果赋值给左边

指针运算符

  • & 取址运算符, 写在变量的前面,返回变量的存储地址
  • * 取值运算符,写在变量的前面,返回变量的值
//声明一个变量
v1 := 53
//申明一个指针变量,并将v1的内存地址赋值给该指针变量
ptr := &v1
//打印指针变量
fmt.Println(ptr) //0xc0000140a0
//打印指针变量指向的数据
fmt.Println(*ptr) //53

//声明一个指针变量
v2 := new(int)
//为指针变量指向的数据赋值
*v2 = 53
//打印指针变量
fmt.Println(v2) //0xc0000140a8
//打印指针变量指向的数据
fmt.Println(*v2) //53

运算符优先级

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级 分类 运算符 结合性
14 后缀运算符 () [] -> 从左到右
13 单目运算符 ! *(指针) ++ -- +(正号) -(负号) 从右到左
12 乘法/除法/取余 *(乘号) / % 从左到右
11 加法/减法 +(加号) -(减号) 从左到右
10 位移运算符 << >> 从左到右
9 关系运算符 < <= > >= 从左到右
8 相等/不等 == != 从左到右
7 按位与 & 从左到右
6 按位异或 ^ 从左到右
5 按位或 | 从左到右
4 逻辑与 && 从左到右
3 逻辑或 || 从左到右
2 赋值运算符 = += -= *= /= %= >>= <<= &= ^= |= 从右到左
1 逗号运算符 , 从左到右
文章作者: Willxup
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Willxup
Go Go
喜欢就支持一下吧