2020-04-30 18:08:29 +08:00
|
|
|
/*
|
|
|
|
|
* @Author : huangzj
|
|
|
|
|
* @Time : 2020/4/30 16:06
|
|
|
|
|
* @Description:数组工具类测试
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package array
|
|
|
|
|
|
|
|
|
|
import (
|
2020-05-07 09:10:54 +08:00
|
|
|
"encoding/json"
|
2020-04-30 18:08:29 +08:00
|
|
|
"fmt"
|
|
|
|
|
"testing"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type MM struct {
|
2020-05-07 09:10:54 +08:00
|
|
|
A int
|
|
|
|
|
B string
|
|
|
|
|
N NN
|
2020-04-30 18:08:29 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type NN struct {
|
2020-05-07 09:10:54 +08:00
|
|
|
A int
|
|
|
|
|
B float64
|
2020-04-30 18:08:29 +08:00
|
|
|
}
|
|
|
|
|
|
2020-05-07 09:10:54 +08:00
|
|
|
var (
|
|
|
|
|
mm []interface{}
|
|
|
|
|
mm1 []interface{}
|
|
|
|
|
mm2 []interface{}
|
|
|
|
|
nn []interface{}
|
|
|
|
|
nn1 []interface{}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestBool(t *testing.T) {
|
|
|
|
|
fmt.Print("\n\nContains\n\n")
|
2020-08-18 17:29:42 +08:00
|
|
|
fmt.Println(Contains(mm, mm))
|
|
|
|
|
fmt.Println(Contains(mm, mm1))
|
|
|
|
|
fmt.Println(Contains(mm, MM{
|
2020-05-07 09:10:54 +08:00
|
|
|
A: 1,
|
|
|
|
|
B: "2",
|
|
|
|
|
}))
|
|
|
|
|
fmt.Print("\n\nNotContains\n\n")
|
2020-08-18 17:29:42 +08:00
|
|
|
fmt.Println(NotContains(mm, mm))
|
|
|
|
|
fmt.Println(NotContains(mm, mm1))
|
|
|
|
|
fmt.Println(NotContains(mm, MM{
|
2020-05-07 09:10:54 +08:00
|
|
|
A: 1,
|
|
|
|
|
B: "2",
|
|
|
|
|
}))
|
|
|
|
|
fmt.Print("\n\nIsSameList\n\n")
|
2020-08-18 17:29:42 +08:00
|
|
|
fmt.Println(IsSameList(mm, mm))
|
|
|
|
|
fmt.Println(IsSameList(mm, nn1))
|
|
|
|
|
fmt.Println(IsSameList(mm, mm2))
|
|
|
|
|
fmt.Println(IsSameList(mm, nn))
|
2020-05-07 09:10:54 +08:00
|
|
|
|
|
|
|
|
fmt.Print("\n\nIsSubSet\n\n")
|
2020-08-18 17:29:42 +08:00
|
|
|
fmt.Println(IsSubSet(mm, mm))
|
|
|
|
|
fmt.Println(IsSubSet(mm, mm1))
|
|
|
|
|
fmt.Println(IsSubSet(mm, mm2))
|
|
|
|
|
fmt.Println(IsSubSet(mm, nn))
|
2020-05-07 16:14:37 +08:00
|
|
|
fmt.Printf("\n\n")
|
2020-05-07 09:10:54 +08:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestJoin(t *testing.T) {
|
|
|
|
|
fmt.Print("\n\nmm-nn\n\n")
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-30 11:47:38 +08:00
|
|
|
func TestEqual(t *testing.T) {
|
2020-08-18 17:29:42 +08:00
|
|
|
DeepCopyIntSlice11()
|
|
|
|
|
DeepCopyIntSlice21()
|
2020-06-30 11:47:38 +08:00
|
|
|
}
|
|
|
|
|
|
2020-05-07 09:10:54 +08:00
|
|
|
func intersection(mm, nn []interface{}) {
|
2020-08-18 17:29:42 +08:00
|
|
|
i1 := Intersection(mm, nn)
|
2020-05-07 09:10:54 +08:00
|
|
|
for _, row := range i1 {
|
|
|
|
|
b, err := json.Marshal(row)
|
|
|
|
|
fmt.Println(err)
|
|
|
|
|
fmt.Print(string(b))
|
2020-04-30 18:08:29 +08:00
|
|
|
}
|
2020-05-07 09:10:54 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func diffSet(mm, nn []interface{}) {
|
2020-08-18 17:29:42 +08:00
|
|
|
i1 := DiffSet(mm, nn)
|
2020-05-07 09:10:54 +08:00
|
|
|
for _, row := range i1 {
|
|
|
|
|
b, _ := json.Marshal(row)
|
|
|
|
|
fmt.Print(string(b))
|
2020-04-30 18:08:29 +08:00
|
|
|
}
|
2020-05-07 09:10:54 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func union(mm, nn []interface{}) {
|
2020-08-18 17:29:42 +08:00
|
|
|
i1 := Union(mm, nn)
|
2020-05-07 09:10:54 +08:00
|
|
|
for _, row := range i1 {
|
|
|
|
|
b, _ := json.Marshal(row)
|
|
|
|
|
fmt.Print(string(b))
|
2020-04-30 18:08:29 +08:00
|
|
|
}
|
2020-05-07 09:10:54 +08:00
|
|
|
}
|
|
|
|
|
|
2020-08-18 17:29:42 +08:00
|
|
|
func DeepCopyIntSlice11() {
|
2020-06-30 11:47:38 +08:00
|
|
|
src := []int{1, 2, 3, 4, 5, 6}
|
2020-08-18 17:29:42 +08:00
|
|
|
src1 := DeepCopyIntSlice(src)
|
2020-06-30 11:47:38 +08:00
|
|
|
fmt.Println(&src == &src1)
|
|
|
|
|
}
|
|
|
|
|
|
2020-08-18 17:29:42 +08:00
|
|
|
func DeepCopyIntSlice21() {
|
2020-06-30 11:47:38 +08:00
|
|
|
src := [][]int{{1, 2, 3}, {4, 5, 6}}
|
2020-08-18 17:29:42 +08:00
|
|
|
src1 := DeepCopyIntSlice2(src)
|
2020-06-30 11:47:38 +08:00
|
|
|
fmt.Println(&src == &src1)
|
|
|
|
|
}
|
|
|
|
|
|
2020-05-07 09:10:54 +08:00
|
|
|
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,
|
|
|
|
|
})
|
2020-04-30 18:08:29 +08:00
|
|
|
|
2020-05-07 09:10:54 +08:00
|
|
|
nn1 = append(nn1, NN{
|
|
|
|
|
A: 30,
|
|
|
|
|
B: 2.2,
|
|
|
|
|
})
|
2020-04-30 18:08:29 +08:00
|
|
|
}
|