feat(Go-Tool):创建ArrayUtils测试类,修改对应方法

This commit is contained in:
huangzj
2020-05-07 09:10:54 +08:00
parent 62266cd26b
commit d448fbad5e
3 changed files with 144 additions and 67 deletions
+2
View File
@@ -15,3 +15,5 @@
2020/4/30 :添加FileUtil.go、FileReadTool.go单测类代码,修改相应bug-----IniTool.go依赖获取不到,注释掉代码 2020/4/30 :添加FileUtil.go、FileReadTool.go单测类代码,修改相应bug-----IniTool.go依赖获取不到,注释掉代码
2020/4/30 : 创建ArrayUtil.go,添加数组对应方法 2020/4/30 : 创建ArrayUtil.go,添加数组对应方法
2020/5/6 : 创建ArrayUtils测试类,修改对应方法
+135 -35
View File
@@ -7,51 +7,151 @@
package array package array
import ( import (
"Go-Tool/util/array"
"encoding/json"
"fmt" "fmt"
"testing" "testing"
) )
type MM struct { type MM struct {
a int A int
b string B string
n NN N NN
} }
type NN struct { type NN struct {
a int A int
b float64 B float64
} }
func TestArray(t *testing.T) { var (
n := NN{ mm []interface{}
a: 12, mm1 []interface{}
b: 2.22, mm2 []interface{}
} nn []interface{}
n1 := NN{ nn1 []interface{}
a: 12, )
b: 2.22,
} func TestBool(t *testing.T) {
n2 := NN{ fmt.Print("\n\nContains\n\n")
a: 12, fmt.Println(array.Contains(mm, mm))
b: 2.212, fmt.Println(array.Contains(mm, mm1))
} fmt.Println(array.Contains(mm, MM{
x := MM{ A: 1,
a: 1, B: "2",
b: "1", }))
n: n, fmt.Print("\n\nNotContains\n\n")
} fmt.Println(array.NotContains(mm, mm))
y := MM{ fmt.Println(array.NotContains(mm, mm1))
a: 1, fmt.Println(array.NotContains(mm, MM{
b: "1", A: 1,
n: n1, B: "2",
} }))
z := MM{ fmt.Print("\n\nIsSameList\n\n")
a: 1, fmt.Println(array.IsSameList(mm, mm))
b: "1", fmt.Println(array.IsSameList(mm, nn1))
n: n2, fmt.Println(array.IsSameList(mm, mm2))
fmt.Println(array.IsSameList(mm, nn))
fmt.Print("\n\nIsSubSet\n\n")
fmt.Println(array.IsSubSet(mm, mm))
fmt.Println(array.IsSubSet(mm, mm1))
fmt.Println(array.IsSubSet(mm, mm2))
fmt.Println(array.IsSubSet(mm, nn))
} }
fmt.Print(x == y) func TestJoin(t *testing.T) {
fmt.Print("\n\n测试一下") fmt.Print("\n\nmm-nn\n\n")
fmt.Print(x == z) intersection(mm, nn)
fmt.Print("\n\nmm-mm\n\n")
intersection(mm, mm)
fmt.Print("\n\nmm-mm1\n\n")
intersection(mm, mm1)
fmt.Print("\n\nmm-mm2\n\n")
intersection(mm, mm2)
fmt.Print("\n\ndiff\n\n")
diffSet(mm, nn)
fmt.Print("\n\n\n\n")
diffSet(mm, mm)
fmt.Print("\n\n\n\n")
diffSet(mm, mm1)
fmt.Print("\n\n\n\n")
diffSet(mm, mm2)
fmt.Print("\n\nunion\n\n")
union(mm, nn)
fmt.Print("\n\n\n\n")
union(mm, mm)
fmt.Print("\n\n\n\n")
union(mm, mm1)
fmt.Print("\n\n\n\n")
union(mm, mm2)
}
func intersection(mm, nn []interface{}) {
i1 := array.Intersection(mm, nn)
for _, row := range i1 {
b, err := json.Marshal(row)
fmt.Println(err)
fmt.Print(string(b))
}
}
func diffSet(mm, nn []interface{}) {
i1 := array.DiffSet(mm, nn)
for _, row := range i1 {
b, _ := json.Marshal(row)
fmt.Print(string(b))
}
}
func union(mm, nn []interface{}) {
i1 := array.Union(mm, nn)
for _, row := range i1 {
b, _ := json.Marshal(row)
fmt.Print(string(b))
}
}
func init() {
mm = make([]interface{}, 0)
mm1 = make([]interface{}, 0)
nn = make([]interface{}, 0)
nn1 = make([]interface{}, 0)
mm = append(mm, MM{
A: 1,
B: "1",
})
mm = append(mm, MM{
A: 1,
B: "2",
})
mm1 = append(mm1, MM{
A: 1,
B: "2",
})
mm2 = append(mm2, MM{
A: 1,
B: "2",
})
mm2 = append(mm2, MM{
A: 1,
B: "3",
})
nn = append(nn, NN{
B: 1.2,
A: 1,
})
nn = append(nn, NN{
B: 2.9,
A: 20,
})
nn1 = append(nn1, NN{
A: 30,
B: 2.2,
})
} }
+5 -30
View File
@@ -12,20 +12,12 @@ package array
import "reflect" import "reflect"
var (
invalid = [7]reflect.Kind{reflect.UnsafePointer, reflect.Map, reflect.Slice,
reflect.Interface, reflect.Func, reflect.Chan, reflect.Ptr}
)
/* /*
* 返回数组中是否包含对应元素的结果 * 返回数组中是否包含对应元素的结果
*/ */
func Contains(list []interface{}, ele interface{}) bool { func Contains(list []interface{}, ele interface{}) bool {
if typeInvalid(reflect.TypeOf(ele).Kind()) {
panic("该类型不支持比较")
}
for _, row := range list { for _, row := range list {
if row == ele { if reflect.DeepEqual(row, ele) {
return true return true
} }
} }
@@ -43,19 +35,12 @@ func NotContains(list []interface{}, ele interface{}) bool {
* 返回两个数组的所有元素是否相等的结果 * 返回两个数组的所有元素是否相等的结果
*/ */
func IsSameList(list, eList []interface{}) bool { func IsSameList(list, eList []interface{}) bool {
same := 0
if len(list) != len(eList) { if len(list) != len(eList) {
return false return false
} }
for _, l := range list {
for _, r := range eList { return reflect.DeepEqual(list, eList)
if l == r {
same++
break
}
}
}
return same == len(list)
} }
/* /*
@@ -113,19 +98,9 @@ func Union(aList, bList []interface{}) []interface{} {
} }
} }
for _, row := range bList { for _, row := range bList {
if NotContains(bList, row) { if NotContains(result, row) {
result = append(result, row) result = append(result, row)
} }
} }
return result return result
} }
func typeInvalid(k reflect.Kind) bool {
for _, row := range invalid {
if k == row {
return true
}
}
return false
}