Go的运算符
算术运算符
+相加-相减*相乘/相除%求余++自增(+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 | 逗号运算符 | , |
从左到右 |
本文链接:
/archives/gobase-5
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Willxup!
喜欢就支持一下吧