github.com/golang-infrastructure/go-reflect-utils@v0.0.0-20221130143747-965ef2eb09c3/walk.go (about) 1 package reflect_utils 2 3 //func Walk(v any, visitor func(key, value reflect.ItemValue) bool) { 4 // reflectValue := reflect.ValueOf(v) 5 // reflectType := reflect.TypeOf(v) 6 // switch reflectType.Kind() { 7 // case reflect.Struct: 8 // for i := 0; i < reflectType.NumField(); i++ { 9 // v := reflectValue.Field(i) 10 // if !visitor(v, nil) { 11 // return 12 // } 13 // } 14 // case reflect.Slice, reflect.Array: 15 // for i := 0; i < reflectValue.Len(); i++ { 16 // v := reflectValue.Index(i) 17 // if !visitor(v, nil) { 18 // return 19 // } 20 // } 21 // case reflect.Map: 22 // keys := reflectValue.MapKeys() 23 // for i := range keys { 24 // // TODO 25 // } 26 // default: 27 // visitor(reflectValue, nil) 28 // } 29 //}