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