运算符用于在程序运行时执行数学或逻辑运算。
Go 语言内置的运算符有:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
算术运算符
运算符 | 描述 |
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
++ | 自增 |
-- | 自减 |
关系运算符
关系运算符返回值是布尔类型,如果逻辑正确,比如2大于1,返回true。2>5,逻辑不成立,返回false。
运算符 | 描述 |
== | 检查两个值是否相等 |
!= | 检查两个值是否不相等 |
> | 检查左边值是否大于右边值 |
< | 检查左边值是否小于右边值 |
>= | 检查左边值是否大于等于右边值 |
<= | 检查左边值是否小于等于右边值 |
逻辑运算符
逻辑运算符是在运算符两边分别有一个表达式(!除外),表达式的值要为布尔类型的true或false。
运算符 | 描述 |
&& | 逻辑 AND 运算符。 如果两边的操作数都是 true,则条件 true,否则为 false。 |
|| | 逻辑 OR 运算符。 如果两边的操作数有一个 true,则条件 true,否则为 false。 |
! | 逻辑 NOT 运算符。 如果条件为 true,则逻辑 NOT 条件 false,否则为 true。 |
举例
packagemainimport"fmt"funcmain() { varabool=truevarbbool=falseif ( a&&b ) { fmt.Printf("第一行 - 条件为 true\n" ) } if ( a||b ) { fmt.Printf("第二行 - 条件为 true\n" ) } /* 修改 a 和 b 的值 */a=falseb=trueif ( a&&b ) { fmt.Printf("第三行 - 条件为 true\n" ) } else { fmt.Printf("第三行 - 条件为 false\n" ) } if ( !(a&&b) ) { fmt.Printf("第四行 - 条件为 true\n" ) } }
结果:
第二行 - 条件为 true
第三行 - 条件为 false
第四行 - 条件为 true
位运算符
位运算符对整数在内存中的二进制位进行操作。
运算符 | 描述 |
& | 参与运算的两数各对应的二进位相与 |
| | 参与运算的两数各对应的二进位相或 |
^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1 |
<< | 左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0 |
>> | 右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 |
p | q | p&q | p|q | p^q |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
运算符优先级
优先级 | 运算符 |
5 | * / % << >> & &^ |
4 | + - | ^ |
3 | == != < <= > >= |
2 | && |
1 | || |