当前位置:  首页>> 技术小册>> GO面试指南

在 Go 中,可以使用 == 和 != 运算符对基本类型(如整数、浮点数、布尔值等)进行相等比较。对于复合类型(如结构体、数组、切片、映射等),需要逐个比较每个成员或元素,以判断它们是否相等。Go 中的相等比较会考虑值和类型。

以下是一个示例代码,展示 Go 中的相等比较:

  1. package main
  2. import "fmt"
  3. func main() {
  4. // 基本类型的相等比较
  5. a := 10
  6. b := 20
  7. fmt.Println(a == b) // false
  8. c := "hello"
  9. d := "world"
  10. fmt.Println(c == d) // false
  11. // 结构体的相等比较
  12. type Person struct {
  13. Name string
  14. Age int
  15. }
  16. e := Person{Name: "Alice", Age: 20}
  17. f := Person{Name: "Bob", Age: 30}
  18. fmt.Println(e == f) // false
  19. g := Person{Name: "Alice", Age: 20}
  20. fmt.Println(e == g) // true
  21. // 切片的相等比较
  22. h := []int{1, 2, 3}
  23. i := []int{4, 5, 6}
  24. fmt.Println(h == i) // false
  25. j := []int{1, 2, 3}
  26. k := []int{1, 2, 3}
  27. fmt.Println(j == k) // false,切片只能和 nil 比较相等
  28. fmt.Println(j, k, j == nil, k == nil) // [1 2 3] [1 2 3] false false
  29. }

在这个例子中,我们演示了如何对基本类型、结构体和切片进行相等比较。我们首先比较了两个整数、两个字符串,然后比较了两个不同的 Person 结构体,最后比较了两个不同的 int 类型的切片。

需要注意的是,切片只能和 nil 比较相等,不能和其他切片比较相等。因此,我们需要分别比较切片和 nil 的相等性。


该分类下的相关小册推荐: