walk iterates through all the parameters of m.
(m any)
| 29 | |
| 30 | // walk iterates through all the parameters of m. |
| 31 | func (pt paramsTraversal) walk(m any) { |
| 32 | if m, ok := m.(ParamsTraverser); ok { |
| 33 | m.TraverseParams(pt.paramsFunc) |
| 34 | return |
| 35 | } |
| 36 | forEachField(m, func(field any, name string) { |
| 37 | v := reflect.ValueOf(field) |
| 38 | switch v.Kind() { |
| 39 | case reflect.Struct, reflect.Ptr, reflect.Interface: |
| 40 | pt.walkStructOrPtr(field, name) |
| 41 | case reflect.Slice, reflect.Array: |
| 42 | pt.walkSlice(v, name) |
| 43 | case reflect.Map: |
| 44 | pt.walkMap(v, name) |
| 45 | } |
| 46 | }) |
| 47 | } |
| 48 | |
| 49 | func (pt paramsTraversal) walkStructOrPtr(item any, name string) bool { |
| 50 | v := reflect.ValueOf(item) |
no test coverage detected