比较两个slicestruct或者map是否相等
Posted timliudream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较两个slicestruct或者map是否相等相关的知识,希望对你有一定的参考价值。
我们可以直接使用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) } }
对于slice,我们还可以使用另外一种方法:
func stringSliceEqualBCE(a, b []string) bool { if len(a) != len(b) { return false } if (a == nil) != (b == nil) { return false } b = b[:len(a)] for i, v := range a { if v != b[i] { return false } } return true }
以上是关于比较两个slicestruct或者map是否相等的主要内容,如果未能解决你的问题,请参考以下文章