在 Go 中,可以使用 == 和 != 运算符对基本类型(如整数、浮点数、布尔值等)进行相等比较。对于复合类型(如结构体、数组、切片、映射等),需要逐个比较每个成员或元素,以判断它们是否相等。Go 中的相等比较会考虑值和类型。
以下是一个示例代码,展示 Go 中的相等比较:
package main
import "fmt"
func main() {
// 基本类型的相等比较
a := 10
b := 20
fmt.Println(a == b) // false
c := "hello"
d := "world"
fmt.Println(c == d) // false
// 结构体的相等比较
type Person struct {
Name string
Age int
}
e := Person{Name: "Alice", Age: 20}
f := Person{Name: "Bob", Age: 30}
fmt.Println(e == f) // false
g := Person{Name: "Alice", Age: 20}
fmt.Println(e == g) // true
// 切片的相等比较
h := []int{1, 2, 3}
i := []int{4, 5, 6}
fmt.Println(h == i) // false
j := []int{1, 2, 3}
k := []int{1, 2, 3}
fmt.Println(j == k) // false,切片只能和 nil 比较相等
fmt.Println(j, k, j == nil, k == nil) // [1 2 3] [1 2 3] false false
}
在这个例子中,我们演示了如何对基本类型、结构体和切片进行相等比较。我们首先比较了两个整数、两个字符串,然后比较了两个不同的 Person 结构体,最后比较了两个不同的 int 类型的切片。
需要注意的是,切片只能和 nil 比较相等,不能和其他切片比较相等。因此,我们需要分别比较切片和 nil 的相等性。