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!
喜欢就支持一下吧