...
1 package util
2
3 import (
4 "fmt"
5 "reflect"
6 "sort"
7 "strings"
8 )
9
10 type ValueSlice []reflect.Value
11
12 func (vs ValueSlice) Len() int { return len(vs) }
13 func (vs ValueSlice) Less(i, j int) bool { return vs[i].String() < vs[j].String() }
14 func (vs ValueSlice) Swap(i, j int) { vs[i], vs[j] = vs[j], vs[i] }
15
16 func (vs ValueSlice) Equal(other ValueSlice) bool {
17 sort.Sort(other)
18 for i, key := range vs {
19 if other[i].String() != key.String() {
20 return false
21 }
22 }
23 return true
24 }
25
26 func (vs ValueSlice) String() string {
27 vals := make([]string, vs.Len())
28 for i, key := range vs {
29 vals[i] = fmt.Sprintf(`"%s"`, key.String())
30 }
31 sort.Strings(vals)
32 return fmt.Sprintf("[%s]", strings.Join(vals, ","))
33 }
34
View as plain text