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,则第二个条件不会判断,最终结果为false1fmt.Println(false && true) //false||也叫短路或;如果第一个条件为true,则第二个条件不会判断,最终结果为true1fmt.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 | 后缀运算符 | ( )、[ ]、-> | 从左到右 |
❣️注意:优先级值越大,表示优先级越高。