第 3 章:运算符
在 Go 语言中,运算符是用于执行特定操作的符号。它们可以用于进行数学计算、比较操作、逻辑判断等。本章将详细介绍 Go 语言中的各种运算符及其使用方法。
一、算术运算符
算术运算符用于执行基本的数学运算。Go 语言提供了以下算术运算符:
+
:加法-
:减法*
:乘法/
:除法%
:取模(求余数)++
:自增--
:自减
(一)基本算术运算
以下是一些使用算术运算符的例子:
go
package main
import "fmt"
func main() {
var a int = 10
var b int = 5
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++
fmt.Println("a++ =", a) // 自增
b--
fmt.Println("b-- =", b) // 自减
}
(二)浮点数运算
对于浮点数,算术运算符同样适用:
go
package main
import "fmt"
func main() {
var a float64 = 10.5
var b float64 = 3.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) // 除法
}
(三)取模运算
取模运算符 %
用于获取两个整数相除后的余数。它只能用于整数运算:
go
package main
import "fmt"
func main() {
var a int = 10
var b int = 3
fmt.Println("a % b =", a % b) // 取模
}
二、赋值运算符
赋值运算符用于将值赋给变量。Go 语言提供了多种赋值运算符:
=
:简单赋值+=
:加法赋值-=
:减法赋值*=
:乘法赋值/=
:除法赋值%=
:取模赋值
(一)简单赋值
go
package main
import "fmt"
func main() {
var a int = 10
fmt.Println("a =", a)
}
(二)复合赋值
复合赋值运算符可以将运算和赋值操作结合在一起:
go
package main
import "fmt"
func main() {
var a int = 10
a += 5 // 等价于 a = a + 5
fmt.Println("a += 5 =", a)
a -= 3 // 等价于 a = a - 3
fmt.Println("a -= 3 =", a)
a *= 2 // 等价于 a = a * 2
fmt.Println("a *= 2 =", a)
a /= 4 // 等价于 a = a / 4
fmt.Println("a /= 4 =", a)
a %= 3 // 等价于 a = a % 3
fmt.Println("a %= 3 =", a)
}
三、关系运算符
关系运算符用于比较两个值之间的关系。它们返回布尔值 true
或 false
。Go 语言提供了以下关系运算符:
==
:等于!=
:不等于>
:大于<
:小于>=
:大于等于<=
:小于等于
(一)比较操作
go
package main
import "fmt"
func main() {
var a int = 10
var b int = 5
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) // 小于等于
}
四、逻辑运算符
逻辑运算符用于组合多个布尔表达式。Go 语言提供了以下逻辑运算符:
&&
:逻辑与(短路与)||
:逻辑或(短路或)!
:逻辑非
(一)逻辑与
逻辑与运算符 &&
用于判断两个布尔表达式是否都为 true
。如果两个表达式都为 true
,则返回 true
,否则返回 false
:
go
package main
import "fmt"
func main() {
var a bool = true
var b bool = false
fmt.Println("a && b =", a && b) // 逻辑与
}
(二)逻辑或
逻辑或运算符 ||
用于判断两个布尔表达式中是否至少有一个为 true
。如果至少有一个表达式为 true
,则返回 true
,否则返回 false
:
go
package main
import "fmt"
func main() {
var a bool = true
var b bool = false
fmt.Println("a || b =", a || b) // 逻辑或
}
(三)逻辑非
逻辑非运算符 !
用于取布尔表达式的反值。如果表达式为 true
,则返回 false
,反之亦然:
go
package main
import "fmt"
func main() {
var a bool = true
fmt.Println("!a =", !a) // 逻辑非
}
五、位运算符
位运算符用于对整数的二进制位进行操作。Go 语言提供了以下位运算符:
&
:按位与|
:按位或^
:按位异或<<
:左移>>
:右移&^
:按位清零(a &^ b
等价于a & (^b)
)
(一)按位与
按位与运算符 &
用于对两个整数的二进制位进行逐位与操作。只有当两个位都为 1 时,结果才为 1,否则为 0:
go
package main
import "fmt"
func main() {
var a int = 5 // 二进制:0101
var b int = 3 // 二进制:0011
fmt.Println("a & b =", a & b) // 按位与
}
(二)按位或
按位或运算符 |
用于对两个整数的二进制位进行逐位或操作。只要有一个位为 1,结果就为 1,否则为 0:
go
package main
import "fmt"
func main() {
var a int = 5 // 二进制:0101
var b int = 3 // 二进制:0011
fmt.Println("a | b =", a | b) // 按位或
}
(三)按位异或
按位异或运算符 ^
用于对两个整数的二进制位进行逐位异或操作。只有当两个位不同时,结果才为 1,否则为 0:
go
package main
import "fmt"
func main() {
var a int = 5 // 二进制:0101
var b int = 3 // 二进制:0011
fmt.Println("a ^ b =", a ^ b) // 按位异或
}
(四)左移和右移
左移运算符 <<
和右移运算符 >>
用于对整数的二进制位进行移位操作。左移会将位向左移动指定的位数,右移则相反:
go
package main
import "fmt"
func main() {
var a int = 5 // 二进制:0101
fmt.Println("a << 1 =", a << 1) //