SliceEquals 用以比較兩個Slice(基礎數據類型,如[]int)內含值是否相等
--------------------------------compare.go---------------------------------
package compare import "reflect" // SliceEquals 用以比較兩個Slice(基礎數據類型,如[]int)內含值是否相等 func SliceEquals(a, b interface{}) bool { // a,有任意一個不是slice返回false _a := reflect.ValueOf(a) if _a.Kind() != reflect.Slice { panic("param a must be a slice") } _b := reflect.ValueOf(b) if _b.Kind() != reflect.Slice { panic("param a must be a slice") } // 長度不等則兩個slice不同 if _a.Len() != _b.Len() { return false } // 依次比較每個值 for i := 0; i < _a.Len(); i++ { if _a.Index(i).Interface() != _b.Index(i).Interface() { return false } } return true }
-------------------------------compare_test.go-----------------------------
package compare import ( "testing" ) func TestArrEquals(t *testing.T) { s1 := []string{"1", "2"} s2 := []string{"1", "2"} if !SliceEquals(s1, s2) { t.Errorf("not the same") } }