算术运算符
假设a为3,b为2
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法运算符 | a + b = 5 |
– | 减法运算符 | a – b = 1 |
* | 乘法运算符 | a * b = 6 |
/ | 除法运算符 | a / b = 1 |
% | 取余运算符 | a % b = 1 |
++ | 自增运算符 | a++ = 4 |
— | 自减运算符 | b– = 1 |
代码示例:
package main
import "fmt"
func main() {
a := 3
b := 2
fmt.Println("a + b = ", a + b)
fmt.Println("a - b = ", a - b)
fmt.Println("a * b = ", a * b)
fmt.Println("a / b = ", a / b)
fmt.Println("a % b = ", a % b)
a++
b--
fmt.Println("a ++ = ", a)
fmt.Println("b -- = ", b)
}
运行结果:

关系运算符
假设a为3,b为2
运算符 | 描述 | 示例 |
---|---|---|
== | 判断两个值是否相等,如果相等返回true,否则返回false | a == b 为 false |
!= | 判断两个值是否不相等,如果不相等返回true 否则返回false | a != b 为 true |
> | 判断左边值是否大于右边值,如果是返回true 否则返回false | a > b 为 true |
< | 判断左边值是否小于右边值,如果是返回true 否则返回false | a < b 为 false |
>= | 判断左边值是否大于等于右边值,如果是返回true 否则返回false | a >= b 为 true |
<= | 判断左边值是否小于等于右边值,如果是返回true 否则返回false。 | a <= b 为 false |
代码示例:
package main
import "fmt"
func main() {
a := 3
b := 2
fmt.Println("a == b : ", a == b)
fmt.Println("a != b : ", a != b)
fmt.Println("a > b : ", a > b)
fmt.Println("a < b : ", a < b)
fmt.Println("a >= b : ", a >= b)
fmt.Println("a <= b : ", a <= b)
}
运行结果:

逻辑运算符
假设a为true,b为false
运算符 | 描述 | 实例 |
---|---|---|
&& | 逻辑与运算符,如果两边都为true,则为true,否则为false | a && b 为 false |
|| | 逻辑或运算符,如果任意有一边为true,则为true,否则为false | a || b 为 true |
! | 逻辑非运算符,如果为true,返回false,如果为false,返回true | !a 为 false, !b 为true |
代码示例:
package main
import "fmt"
func main() {
a := true
b := false
fmt.Println("a && b : ", a && b)
fmt.Println("a || b : ", a || b)
fmt.Println("!a : ", !a)
fmt.Println("!b : ", !b)
}
运行结果:

注意:逻辑运算符通常用于在if条件中做判断使用,并且逻辑运算符可以与关系运算符结合使用,例如 a > b && b > c
,当a 大于 b,并且b 大于 c 时则为true,否则为false。
位运算符
位运算符是对整数的二进制进行计算
假设a为3,b为2
则a转为二进制为:0011,b的二进制为:0010
a & b的计算方式步骤:
第一步:将a和b转为二进制
a = 0011 b = 0010
第二步:将转为二进制的两个数进行按位与运算
按位与运算规则:对应的两位数都为1则结果为1,计算结果如下
a: 0011
b: 0010
& ------
结果:0010
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符,将两边的整数作为二进制进行按位与运算,两位都为1则为1 | a & b = 2,二进制为0010 |
| | 按位或运算符,将两边的整数作为二进制进行按位或运算,两位其中一个为1,则为1 | a | b = 3,二进制为0011 |
^ | 异或运算符,将两边的整数作为二进制进行按位或运算,两位不相同则为1 | a ^ b = 1,二进制为0001 |
<< | 左移运算符,将左边的数转为二进制后向左位移右边指定的位数,左移n位就是乘以2的n次方 | a << 2 结果为12 ,二进制为 1100 |
>> | 右移运算符,将左边的数转为二进制后向右位移右边指定的位数,右移n位就是除以2的n次方 | a >> 2 结果为0 ,二进制为 0000 |
示例代码:
package main
import "fmt"
func main() {
a := 3
b := 2
fmt.Println("a & b = ", a & b)
fmt.Println("a | b = ", a | b)
fmt.Println("a ^ b = ", a ^ b)
fmt.Println("a << 2 = ", a << 2)
fmt.Println("a >> 2 = ", a >> 2)
}
运行结果:

赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符,将右边表达式的值赋值给左边变量 | c = a + b => 表达式 a + b的结果赋值给变量c |
+= | 相加后再赋值 | a += b => a = a + b |
-= | 相减后再赋值 | a -= b => a = a – b |
*= | 相乘后再赋值 | a *= b => a = a * b |
/= | 相除后再赋值 | a /= b => a = a / b |
%= | 求余后再赋值 | a %= b => a = a % b |
<<= | 左移后赋值 | a <<= 2 => a = a << 2 |
>>= | 右移后赋值 | a >>= 2 => a = a >> 2 |
&= | 按位与后赋值 | a &= 2 => a = a & 2 |
^= | 按位异或后赋值 | a ^= 2 => a = a ^ 2 |
|= | 按位或后赋值 | a |= 2 => a = a | 2 |
代码示例:
package main
import "fmt"
func main() {
a := 3
b := 2
var c int
c = a + b
fmt.Println("c = ", c)
a += b
fmt.Println("a = ", a)
a -= b
fmt.Println("a = ", a)
a *= b
fmt.Println("a = ", a)
a /= b
fmt.Println("a = ", a)
}
运行结果:

运算符优先级
由上到下代表优先级从高到低,相同优先级的运算符在计算的过程中按照从左往右依次计算,同时还可以临时使用小括号提高优先级。
优先级 | 运算符 |
---|---|
5 | * / % << >> & &^ |
4 | + – | ^ |
3 | == != < <= > >= |
2 | && |
1 | || |
代码示例:
package main
import "fmt"
func main() {
a := 20
b := 10
c := 15
d := 5
fmt.Println("(a + b) * c / d = ", ( a + b ) * c / d)
fmt.Println("((a + b) * c) / d = ", (( a + b) * c) / d)
fmt.Println("(a + b) * (c / d) = ", (a + b) * (c / d))
fmt.Println("a + (b * c) / d = ", a + (b * c) / d)
}
运行结果:

原文始发于微信公众号(良猿):Java转Go—03运算符
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/215899.html