第四部分 运算符
- 运算符用于执行各种数学和逻辑操作。
-
算术运算符:
- 加法运算符:+
- 减法运算符:-
- 乘法运算符:*
- 除法运算符:/
- 取余运算符:%
- 自增运算符:++
- 自减运算符:-- 示例:
a := 10
b := 3
// 加法运算符
c := a + b // c的值为13
// 减法运算符
d := a - b // d的值为7
// 乘法运算符
e := a * b // e的值为30
// 除法运算符
f := a / b // f的值为3
// 取余运算符
g := a % b // g的值为1
// 自增运算符
a++ // 现在a的值为11
// 自减运算符
b-- // 现在b的值为2
-
关系运算符:
- 相等运算符:==
- 不等运算符:!=
- 大于运算符:>
- 小于运算符:<
- 大于等于运算符:>=
- 小于等于运算符:<= 示例:
a := 5
b := 8
// 相等运算符
c := (a == b) // c的值为false
// 不等运算符
d := (a != b) // d的值为true
// 大于运算符
e := (a > b) // e的值为false
// 小于运算符
f := (a < b) // f的值为true
// 大于等于运算符
g := (a >= b) // g的值为false
// 小于等于运算符
h := (a <= b) // h的值为true
-
逻辑运算符:
- 逻辑与运算符:&&
- 逻辑或运算符:||
- 逻辑非运算符:! 示例:
a := true
b := false
// 逻辑与运算符
c := (a && b) // c的值为false
// 逻辑或运算符
d := (a || b) // d的值为true
// 逻辑非运算符
e := !a // e的值为false
-
位运算符:
- 按位与运算符:&
- 按位或运算符:|
- 按位异或运算符:^
- 左移运算符:<<
- 右移运算符:>>
示例:
按位与运算符(&):
a := 5 // 二进制表示为 0101
b := 3 // 二进制表示为 0011
c := a & b // c的值为 0001,转换成十进制为 1
按位或运算符(|):
a := 5 // 二进制表示为 0101
b := 3 // 二进制表示为 0011
c := a | b // c的值为 0111,转换成十进制为 7
```
按位异或运算符(^):
a := 5 // 二进制表示为 0101
b := 3 // 二进制表示为 0011
c := a ^ b // c的值为 0110,转换成十进制为 6
左移运算符(<<):
a := 5 // 二进制表示为 0000 0101
b := a << 2 // b的值为 0001 0100,转换成十进制为 20
```
右移运算符(>>):
a := 5 // 二进制表示为 0000 0101
b := a >> 2 // b的值为 0000 0001,转换成十进制为 1
按位取反运算符(^):
a := 5 // 二进制表示为 0000 0101
b := ^a // b的值为 1111 1010,转换成十进制为 -6
-
赋值运算符:
- 简单赋值运算符:=
- 加法赋值运算符:+=
- 减法赋值运算符:-=
- 乘法赋值运算符:*=
- 除法赋值运算符:/=
- 取余赋值运算符:%=
- 位与赋值运算符:&=
- 位或赋值运算符:|=
- 位异或赋值运算符:^=
- 左移赋值运算符:<<=
- 右移赋值运算符:>>= 示例:
a := 5
// 简单赋值运算符
b := a // b的值为5
// 加法赋值运算符
a += 2 // 现在a的值为7
// 减法赋值运算符
a -= 3 // 现在a的值为4
// 乘法赋值运算符
a *= 2 // 现在a的值为8
// 除法赋值运算符
a /= 4 // 现在a的值为2
// 取余赋值运算符
a %= 3 // 现在a的值为2
6.运算符优先级
- 常见的Go语言运算符优先级从高到低的顺序:
- 括号:
()(括号用于控制表达式的执行顺序) - 单目运算符:
+、-、!、^(正负号、逻辑非、按位取反) - 算术运算符:
*、/、% - 位运算符:
<<、>>、&、&^、|、^ - 加法和减法运算符:
+、- - 比较运算符:
==、!=、<、<=、>、>= - 逻辑运算符:
&&、|| - 赋值运算符:
=其他赋值运算符如+=、-=、*=、/=、%=、<<=、>>=、&=、&^=、|=、^=等,它们的优先级与相应的算术或位运算符相同。
需要注意的是,具有相同优先级的运算符将按照从左到右的顺序进行计算。
下面是一个示例:
a := 5 + 3*2 // a的值为11,先计算乘法,再计算加法
b := (5 + 3) * 2 // b的值为16,括号优先级最高
c := 8 / 4 * 2 // c的值为4,先计算除法,再计算乘法
d := 10 % 3 + 2 // d的值为3,先计算取余,再计算加法
e := 6 > 4 && 3 < 5 // e的值为true,先计算逻辑与,再计算比较
f := 2 << 3 // f的值为16,左移操作
g := 20 &^ 7 // g的值为16,按位清零操作
个人思考
在学习运算符的过程中,我觉得首先了解各种运算符的优先级是很重要的,它们会影响表达式的计算顺序。正确理解优先级有助于编写清晰、可预测的代码。其次,每个运算符都有其特定的功能和用途,对于算术运算符,需要明白加法、减法、乘法、除法等的使用场景;位运算符对于处理二进制数据非常有用;逻辑运算符可以进行布尔值的操作等等。 通过深入了解每个运算符的功能和特性,利用它们解决问题,对于我们编写可读性高和逻辑性强的代码很有价值。
希望这些感悟对大家有所帮助!