Golang教程

运算符和表达式

Preview
  • Golang 运算符和表达式
  • 算术运算符
  • 逻辑运算符
  • 比较运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符
  • 总结

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 提供了丰富的运算符和表达式,可以满足各种计算和条件判断的需求。熟练掌握这些运算符和表达式对于编写高效、可维护的代码非常重要。