WrapRanger returns Ranger, true if v can be ranged over and nil, false otherwise.
(v any)
| 96 | |
| 97 | // WrapRanger returns Ranger, true if v can be ranged over and nil, false otherwise. |
| 98 | func WrapRanger(v any) (Ranger, bool) { |
| 99 | r, ok := v.(Ranger) |
| 100 | if ok { |
| 101 | return r, ok |
| 102 | } |
| 103 | |
| 104 | rv := reflect.ValueOf(v) |
| 105 | switch rv.Kind() { |
| 106 | case reflect.String, reflect.Slice, reflect.Array: |
| 107 | return indexRanger{rv}, true |
| 108 | case reflect.Map: |
| 109 | return mapRanger{rv}, true |
| 110 | } |
| 111 | return nil, false |
| 112 | } |
| 113 | |
| 114 | // MapKeys returns the keys of a map as a slice. |
| 115 | func MapKeys(m any) []any { |
no outgoing calls
no test coverage detected