gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/mapx/clone.go (about) 1 package mapx 2 3 func CloneMap(a map[string]interface{}) (r map[string]interface{}) { 4 if a == nil { 5 return 6 } 7 r = map[string]interface{}{} 8 for key, val := range a { 9 r[key] = CloneAny(val) 10 } 11 12 return r 13 } 14 15 func CloneArray(a []interface{}) (r []interface{}) { 16 r = make([]interface{}, len(a), cap(a)) 17 for i, val := range a { 18 r[i] = CloneAny(val) 19 } 20 return 21 } 22 23 func CloneAny(a interface{}) (r interface{}) { 24 switch v := a.(type) { 25 case map[string]interface{}: 26 r = CloneMap(v) 27 case []interface{}: 28 r = CloneArray(v) 29 default: 30 r = a 31 } 32 return 33 }