在计算机编程中,运算符是用于对值或变量执行操作的符号。
例如,+
是一个用于将两个数字相加的运算符。
Go 编程提供了各种运算符,这些运算符可分为以下几大类:
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
算术运算符
我们使用算术运算符执行诸如加法、减法、乘法和除法之类的算术运算。
以下是 Go 中提供的各种算术运算符列表。
运算符 | 示例 |
---|---|
+ (加法) |
a + b |
- (减法) |
a - b |
* (乘法) |
a * b |
/ (除法) |
a / b |
% (模除法) |
a % b |
示例 1:加法、减法和乘法运算符
package main
import "fmt"
func main() {
num1 := 6
num2 := 2
// + adds two variables
sum := num1 + num2
fmt.Printf("%d + %d = %d\n", num1, num2, sum)
// - subtract two variables
difference := num1 - num2
fmt.Printf("%d - %d = %d\n",num1, num2, difference)
// * multiply two variables
product := num1 * num2
fmt.Printf("%d * %d is %d\n",num1, num2, product)
}
输出
6 + 2 = 8 6 - 2 = 4 6 * 2 = 12
示例 2:Golang 除法运算符
package main
import "fmt"
func main() {
num1 := 11
num2 := 4
// / divide two integer variables
quotient := num1 / num2
fmt.Printf(" %d / %d = %d\n", num1, num2, quotient)
}
输出
11 / 4 = 2
在上面的示例中,我们使用 /
运算符将两个数字:11
和 4
相除。在这里,我们得到的输出是 2
。
但是,在常规计算中,11 / 4
的结果是 2.75
。这是因为当我们将 /
运算符与整数值一起使用时,我们得到的是商而不是实际结果。

如果我们想要实际结果,则应始终将 /
运算符与浮点数一起使用。例如:
package main
import "fmt"
func main() {
num1 := 11.0
num2 := 4.0
// / divide two floating point variables
result := num1 / num2
fmt.Printf(" %g / %g = %g\n", num1, num2, result)
}
输出
11 / 4 = 2.75
在这里,我们得到了除法后的实际结果。
示例 3:Go 中的模运算符
package main
import "fmt"
func main() {
num1 := 11
num2 := 4
// % modulo-divides two variables
remainder := num1 % num2
fmt.Println(remainder )
}
在上面的示例中,我们使用模运算符处理数字:11
和 4
。在这里,我们得到的结果是 3
。
这是因为在编程中,模运算符始终返回除法的余数。

注意:模运算符始终与整数值一起使用。
Go 中的递增和递减运算符
在 Golang 中,我们使用 ++
(递增)和 --
(递减)运算符分别将变量的值增加或减少 1。例如:
package main
import "fmt"
func main() {
num := 5
// increment of num by 1
num++
fmt.Println(num) // 6
// decrement of num by 1
num--
fmt.Println(num) // 4
}
在上面的例子中:
- num++ - 将 num 的值增加
1
,从5
变为6
- num-- - 将 num 的值减少
1
,从5
变为4
注意:我们已将 ++
和 --
用作前缀(在变量之前)。但是,我们也可以将它们用作后缀(num++ 和 num--)。
将递增和递减运算符用作前缀和后缀之间存在细微差别。要了解区别,请访问前缀和后缀的递增和递减运算符。
Go 赋值运算符
我们使用赋值运算符将值赋给变量。例如:
var number = 34
在这里,=
运算符将右侧的值(34)赋给左侧的变量(number)。
示例:Go 中的赋值运算符
package main
import "fmt"
func main() {
num := 6
var result int
// = operator to assign the value of num to result
result = num
fmt.Println(result) // 6
}
在上面的示例中,我们使用赋值运算符将 num 变量的值赋给 result 变量。
复合赋值运算符
在 Go 中,我们也可以将赋值运算符与算术运算符一起使用。例如:
number := 2
number += 6
在这里,+=
是加法赋值运算符。它首先将 6 加到 number 的值(2)上,然后将最终结果(8)赋给 number
。
以下是 Golang 中提供的各种复合赋值运算符列表。
运算符 | 示例 | 相当于 |
---|---|---|
+= (加法赋值) |
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 |
Golang 中的关系运算符
我们使用关系运算符来比较两个值或变量。例如:
5 == 6
在这里,==
是一个关系运算符,用于检查 5
是否等于 6
。
关系运算符返回
- 如果两个值之间的比较正确,则为
true
- 如果比较错误,则为
false
以下是 Go 中提供的各种关系运算符列表:
运算符 | 示例 | 描述 |
---|---|---|
== (等于) |
a == b |
如果 a 和 b 相等,则返回 true |
!= (不等于) |
a != b |
如果 a 和 b 不相等,则返回 true |
> (大于) |
a > b |
如果 a 大于 b ,则返回 true |
< (小于) |
a < b |
如果 a 小于 b ,则返回 true |
>= (大于或等于) |
a >= b |
如果 a 大于或等于 b ,则返回 true |
<= (小于或等于) |
a <= b |
如果 a 小于或等于 b ,则返回 true |
要了解更多信息,请访问Go 关系运算符。
Go 中的逻辑运算符
我们使用逻辑运算符执行逻辑运算。逻辑运算符根据条件返回 true
或 false
。
运算符 | 描述 | 示例 |
---|---|---|
&& (逻辑 AND) |
exp1 && exp2 |
如果表达式 exp1 和 exp2 都为 true ,则返回 true |
|| (逻辑 OR) |
exp1 || exp2 |
如果任一表达式为 true ,则返回 true 。 |
! (逻辑 NOT) |
!exp |
如果 exp 为 false ,则返回 true ;如果 exp 为 true ,则返回 false 。 |
要了解更多信息,请访问Go 逻辑运算符。
更多关于 Go 运算符
右移运算符将所有位向右移动指定的位数。
假设我们要将数字 212 向右移几位,那么:
212 = 11010100 (In binary)
212 >> 3 = 00011010 = 26 (Right shift by 3 bits)
212 >> 7 = 00000001 = 1 (Right shift by 7 bits)
212 >> 0 = 11010100 = 212 (No Shift)
例如,
package main
import "fmt"
func main() {
num := 212
for i := 0; i <= 3; i++ {
// right shift 212 by bits from 0 to 3
fmt.Printf("Right Shift by %d: %d\n", i, num>>i)
}
}
输出
Right Shift by 0: 212 Right Shift by 1: 106 Right Shift by 2: 53 Right Shift by 3: 26
左移运算符将所有位向左移动指定的位数。由左移运算符腾空的位位置将用 0 填充。
假设我们要将数字 212 向左移几位,那么:
212 = 11010100 (In binary)
212 << 1 = 110101000 = 424 (Adds one 0 to the right)
212 << 3 = 11010100000 = 1696 (Adds three 0's to the right)
212 << 0 = 11010100 = 212 (No Shift)
例如,
package main
import "fmt"
func main() {
num := 212
for i := 0; i <= 3; i++ {
// left shift 212 by bits from 0 to 3
fmt.Printf("Left Shift by %d: %d\n", i, num<<i)
}
}
输出
Left Shift by 0: 212 Left Shift by 1: 424 Left Shift by 2: 848 Left Shift by 3: 1696
在 Go 中,&
是地址运算符,用于指针。它保存变量的内存地址。例如:
package main
import "fmt"
func main() {
num := 20
// &num prints the
// memory address where 20 is stored
fmt.Println(&num)
}
// Output: 0xc0000b8000
在这里,我们使用 *
运算符声明了指针变量。要了解更多信息,请访问Go 指针。
*
运算符有什么用?在 Go 中,*
是解引用运算符,用于声明指针变量。指针变量存储内存地址。例如:
package main
import "fmt"
func main() {
b := 20
// pointer declaration
var num *int = &b
// gives the memory address
fmt.Println(num)
}
// Output: 0xc00010a000
在这里,我们使用 *
运算符声明了指针变量。要了解更多信息,请访问Go 指针。
在 Go 中,我们使用称为运算符优先级的概念,它决定了在同时使用多个运算符时哪个运算符首先执行。例如:
result := 32 / 8 + 2 * 9 -4
在这里,/
运算符首先执行,然后是 *
运算符。+
和 -
运算符分别最后执行。
这是因为优先级较高的运算符首先执行,优先级较低的运算符最后执行。