如何在 Golang 中比較 slice、struct 和 map?


Go 中的 reflect 包提供了一個非常重要的函式,稱為 DeepEqual(),可用於比較複合型別。當我們要檢查兩個資料型別是否“深度相等”時,將使用 DeepEqual() 函式。

比較 slice

示例 1

考慮下面所示的程式碼

package main
import (
   "fmt"
   "reflect"
)
func main() {
   sl := []int{1, 2, 3}
   sl1 := []int{1, 2, 3}
   fmt.Println(reflect.DeepEqual(sl, sl1))
}

輸出

如果我們在上述程式碼上執行命令 go run main.go,那麼我們將在終端中獲得以下輸出。

true

比較 map

示例 2

考慮下面所示的程式碼。

package main
import (
   "fmt"
   "reflect"
)
func main() {
   m1 := make(map[string]int)
   m1["rahul"] = 10
   m1["mukul"] = 11
   m2 := make(map[string]int)
   m2["rahul"] = 10
   m2["mukul"] = 11
   fmt.Println(reflect.DeepEqual(m1, m2))
}

輸出

如果我們在上述程式碼上執行命令 go run main.go,那麼我們將在終端中獲得以下輸出。

true

比較 struct

示例 3

考慮下面所示的程式碼。

package main
import (
   "fmt"
   "reflect"
)
type Person struct {
   name string
   age int
}
func main() {
   p1 := Person{name: "TutorialsPoint", age: 10}
   p2 := Person{name: "TutorialsPoint", age: 10}
   fmt.Println(reflect.DeepEqual(p1, p2))
}

輸出

如果我們在上述程式碼上執行命令 go run main.go,那麼我們將在終端中獲得以下輸出。

true

更新於: 2022-02-21

1K+ 瀏覽

開啟您的職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.