go 判斷兩個 slice/struct/map 是否相等的例項
阿新 • • 發佈:2020-12-28
可以通過 reflect.DeepEqual 比較兩個 slice/struct/map 是否相等:
package main import ( "fmt" "reflect" ) type A struct { s string } func main() { a1 := A{s: "abc"} a2 := A{s: "abc"} if reflect.DeepEqual(a1,a2) { fmt.Println(a1,"==",a2) } b1 := []int{1,2} b2 := []int{1,2} if reflect.DeepEqual(b1,b2) { fmt.Println(b1,b2) } c1 := map[string]int{"a": 1,"b": 2} c2 := map[string]int{"a": 1,"b": 2} if reflect.DeepEqual(c1,c2) { fmt.Println(c1,c2) } }
補充:go語言判斷 slice,array,map中是否存在某個元素
最近在用go重構以前python寫的專案。遇到一些問題,總結一下。自己水平比較菜,遇到問題較低階,自己總結一下,免得忘了
很簡單的需求,判斷某個元素是否在 slice,map中 。其實很簡單。但是還是python最簡單啊。。。。。。。
func Contain(obj interface{},target interface{}) (bool,error) { targetValue := reflect.ValueOf(target) switch reflect.TypeOf(target).Kind() { case reflect.Slice,reflect.Array: for i := 0; i < targetValue.Len(); i++ { if targetValue.Index(i).Interface() == obj { return true,nil } } case reflect.Map: if targetValue.MapIndex(reflect.ValueOf(obj)).IsValid() { return true,nil } } return false,errors.New("not in array") }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。