...
1 package awsutil
2
3 import (
4 "reflect"
5 )
6
7
8
9
10
11
12
13 func DeepEqual(a, b interface{}) bool {
14 ra := reflect.Indirect(reflect.ValueOf(a))
15 rb := reflect.Indirect(reflect.ValueOf(b))
16
17 if raValid, rbValid := ra.IsValid(), rb.IsValid(); !raValid && !rbValid {
18
19
20 return reflect.TypeOf(a) == reflect.TypeOf(b)
21 } else if raValid != rbValid {
22
23 return false
24 }
25
26
27
28 if ra.Kind() == reflect.String && rb.Kind() == reflect.String {
29 return ra.String() == rb.String()
30 }
31
32 return reflect.DeepEqual(ra.Interface(), rb.Interface())
33 }
34
View as plain text