Golang 运算符和表达式
在 Golang 中,运算符用于执行算术、逻辑和比较运算,表达式则是由变量、常量、运算符和函数调用等组成的可执行代码段。
算术运算符
Golang 中的算术运算符包括加法、减法、乘法、除法和取余。它们的符号和用法如下表所示:
运算符 | 描述 | 例子 |
---|---|---|
+ | 加法 | a + b |
- | 减法 | a - b |
* | 乘法 | a * b |
/ | 除法 | a / b |
% | 取余 | a % b |
示例:
a := 10
b := 3
fmt.Println(a + b) // 输出 13
fmt.Println(a - b) // 输出 7
fmt.Println(a * b) // 输出 30
fmt.Println(a / b) // 输出 3
fmt.Println(a % b) // 输出 1
逻辑运算符
Golang 中的逻辑运算符包括与、或、非和异或。它们的符号和用法如下表所示:
运算符 | 描述 | 例子 |
---|---|---|
&& | 与 | a && b |
|| | 或 | a || b |
! | 非 | !a |
^ | 异或 | a ^ b |
示例:
a := true
b := false
fmt.Println(a && b) // 输出 false
fmt.Println(a || b) // 输出 true
fmt.Println(!a) // 输出 false
fmt.Println(a ^ b) // 输出 true
比较运算符
Golang 中的比较运算符用于比较两个值的大小或是否相等。它们的符号和用法如下表所示:
运算符 | 描述 | 例子 |
---|---|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
< | 小于 | a < b |
> | 大于 | a > b |
<= | 小于等于 | a <= b |
>= | 大于等于 | a >= b |
示例:
a := 10
b := 3
fmt.Println(a == b) // 输出 false
fmt.Println(a != b) // 输出 true
fmt.Println(a < b) // 输出 false
fmt.Println(a > b) // 输出 true
fmt.Println(a <= b) // 输出 false
fmt.Println(a >= b) // 输出 true
位运算符
Golang 中的位运算符用于对二进制数进行位操作。它们的符号和用法如下表所示:
运算符 | 描述 | 例子 |
---|---|---|
& | 按位与 | a & b |
| | 按位或 | a | b |
^ | 按位异或 | a ^ b |
<< | 左移 | a << b |
>> | 右移 | a >> b |
&^ | 按位清零 | a &^ b |
示例:
a := 0b1010 // 二进制的 10
b := 0b1100 // 二进制的 12
fmt.Printf("%b\n", a & b) // 输出 1000,即二进制的 8
fmt.Printf("%b\n", a \| b) // 输出 1110,即二进制的 14
fmt.Printf("%b\n", a ^ b) // 输出 0110,即二进制的 6
fmt.Printf("%b\n", a << 1) // 输出 10100,即二进制的 20
fmt.Printf("%b\n", a >> 1) // 输出 101,即二进制的 5
fmt.Printf("%b\n", a &^ b) // 输出 1010,即二进制的 10
赋值运算符
Golang 中的赋值运算符用于将一个值赋给一个变量。它们的符号和用法如下表所示:
运算符 | 描述 | 例子 |
---|---|---|
= | 简单赋值 | a = b |
+= | 加后赋值 | a += b |
-= | 减后赋值 | a -= b |
*= | 乘后赋值 | a *= b |
/= | 除后赋值 | a /= b |
%= | 取余后赋值 | a %= b |
<<= | 左移后赋值 | a <<= b |
>>= | 右移后赋值 | a >>= b |
&= | 按位与后赋值 | a &= b |
|= | 按位或后赋值 | a |= b |
^= | 按位异或后赋值 | a ^= b |
&^= | 按位清零后赋值 | a &^= b |
示例:
a := 10
b := 3
a += b // 等价于 a = a + b
fmt.Println(a) // 输出 13
a -= b // 等价于 a = a - b
fmt.Println(a) // 输出 10
a *= b // 等价于 a = a * b
fmt.Println(a) // 输出 30
a /= b // 等价于 a = a / b
fmt.Println(a) // 输出 10
a %= b // 等价于 a = a % b
fmt.Println(a) // 输出 1
其他运算符
除了以上运算符之外,Golang 还提供了其他一些运算符:
- 地址运算符(&):用于返回变量的地址。
- 取值运算符(*):用于返回指针变量所指向的值。
- 运算符优先级:用于指定运算符的优先级,决定了表达式的执行顺序。
示例:
a := 10
b := &a // 取 a 的地址
fmt.Println(*b) // 输出 10,*b 表示取 b 指向的值
总结
Golang 提供了丰富的运算符和表达式,可以满足各种计算和条件判断的需求。熟练掌握这些运算符和表达式对于编写高效、可维护的代码非常重要。