Go运算符
目录
运算符分类
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
- 算术运算符
- 赋值运算符
- 比较运算符/关系运算符
- 逻辑运算符
- 位运算符
- 其他运算符
算术运算符
介绍
算术运算符是对数值类型的变量进行运算的,比如:加减乘除。
运算符 | 运算 | 示例 | 结果 |
---|---|---|---|
+ | 正好 | +3 | 3 |
- | 负号 | -4 | -4 |
+ | 加 | 5 + 5 | 10 |
- | 减 | 6 - 4 | 2 |
* | 乘 | 3 * 4 | 12 |
/ | 除 | 5 / 5 | 1 |
% | 取模(取余) | 7 % 5 计算公式:a%b = a - a/b *b | 2 |
++ | 自增 | a := 2;a++ | a=3 |
– | 自减 | a :=2;a– | a=1 |
+ | 字符串相加 | “He” + “llo” | “Hello” |
示例
|
|
细节
- 对于除号
/
,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如x:=19/5
,结果是3 - 当对一个数取模时,可以等价
a%b=a-a/b*b
,这样可以看到取模的一个本质运算。 - Go的自增自减只能当做一个独立语言使用,不能这样使用:
b := a++
或者b := a--
- Go的
++
和--
只能卸载变量的后面,不能写在前面,只有a++,a--
,没有++a,--a
关系运算符(比较运算符)
介绍
- 关系运算符的结果都是
bool
型,也就是说:要么是true
,要么是false
- 关系表达式经常用在
if
结构的条件中或for
循环结构的条件中
运算符 | 运算 | 示例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | True |
示例
|
|
细节
- 关系运算符的结果都是
bool
型 - 关系运算符组成的表达式,称为关系表达式
- 比较运算符
==
不能误写成=
❗
逻辑运算符
介绍
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个 bool
值
运算符 | 描述 | 示例(A:True,B:False) |
---|---|---|
&& | 逻辑与运算符。 如果两边的操作都是 True ,则为True ,否则为False | (A && B) 为False |
|| | 逻辑或运算符。 如果两边的操作数有一个 True ,则为True ,否则为False | (A || B) 为True |
! | 逻辑非运算符。 如果条件为 True ,则逻辑为False ,否则为True | !(A && B) 为True |
示例
|
|
细节
&&
也叫短路与;如果第一个条件为false
,则第二个条件不会判断,最终结果为false
1
fmt.Println(false && true) //false
||
也叫短路或;如果第一个条件为true
,则第二个条件不会判断,最终结果为true
1
fmt.Println(true || false) //true
赋值运算符
介绍
赋值运算符就是将某个运算后的值,赋给指定的变量。
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算符,将一个表达式的值赋给变量 | C = A + B |
+= | 相加后再赋值 | C += A |
-= | 相减后再赋值 | C -= A |
*= | 相乘后再赋值 | C *= A |
/= | 相除后再赋值 | C /= A |
%= | 求余(取模)后再赋值 | C %= A |
示例
|
|
细节
- 运算顺序从右往左
- 赋值运算符的左边,只能是变量,右边可以是变量、表达式、常量值
- 复合赋值运算等价于下面的效果:
a += 3
等价于a = a + 3
位运算符
运算符 | 描述 |
---|---|
& | 按位与 运算符& 是双目运算符。其功能是参与运算的两数各对应的二进位相与。运算规则:同时为1,结果为1,否则为0 |
| | 按位或 运算符| 是双目运算符。其功能是参与运算的两数各对应的二进位相或。运算规则:有一个为1,结果为1,否则为0 |
^ | 按位异或 运算符^ 是双目运算符。其功能是参与运算的两数相对应的二进位相异或。运算规则:当二进制位不同时,结果为1,否则为0 |
« | 左移 运算符<< 是双目运算符。其功能把<< 左边的运算数的各二进制位全部左移若干位,高位丢弃,低位补0.左移 n 位就是乘以2的n 次方。 |
» | 右移 运算符>> 是双目运算符。其功能把>> 左边的运算数的各二进制位全部右移若干位。右移 n 位就是除以2的n 次方。 |
|
|
其他运算符
运算符 | 描述 | 示例 |
---|---|---|
& | 返回变量存储地址 | &a 将给出变量的存储地址 |
* | 指针变量 | *a 是一个指针变量 |
|
|
运算符优先级
优先级 | 分类 | 运算符 | 结合性 |
---|---|---|---|
1 | 逗号运算符 | , | 从左到右 |
2 | 赋值运算符 | =、+=、-=、*=、/=、 %=、 >=、 «=、&=、^=、|= | 从右到左 |
3 | 逻辑或 | || | 从左到右 |
4 | 逻辑与 | && | 从左到右 |
5 | 按位或 | | | 从左到右 |
6 | 按位异或 | ^ | 从左到右 |
7 | 按位与 | & | 从左到右 |
8 | 相等/不等 | ==、!= | 从左到右 |
9 | 关系运算符 | <、<=、>、>= | 从左到右 |
10 | 位移运算符 | «、» | 从左到右 |
11 | 加法/减法 | +、- | 从左到右 |
12 | 乘法/除法/取余 | *(乘号)、/、% | 从左到右 |
13 | 单目运算符 | !、*(指针)、& 、++、–、+(正号)、-(负号) | 从右到左 |
14 | 后缀运算符 | ( )、[ ]、-> | 从左到右 |
❣️注意:优先级值越大,表示优先级越高。