...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package deepcopy
16
17 func StringStringMap(src map[string]string) map[string]string {
18 if src == nil {
19 return nil
20 }
21 dst := make(map[string]string, len(src))
22 for k, v := range src {
23 dst[k] = v
24 }
25 return dst
26 }
27
28
29 func DeepCopy(o interface{}) interface{} {
30 if m, ok := o.(map[string]interface{}); ok {
31 new := make(map[string]interface{})
32 for k, v := range m {
33 new[k] = DeepCopy(v)
34 }
35 return new
36 }
37 if s, ok := o.([]interface{}); ok {
38 new := make([]interface{}, 0)
39 for _, v := range s {
40 new = append(new, DeepCopy(v))
41 }
42 return new
43 }
44 return o
45 }
46
47 func MapStringInterface(o map[string]interface{}) map[string]interface{} {
48 return DeepCopy(o).(map[string]interface{})
49 }
50
51 func StringSlice(src []string) []string {
52 dst := make([]string, len(src))
53 for i, v := range src {
54 dst[i] = v
55 }
56 return dst
57 }
58
View as plain text