normalizeValue 递归处理值,确保 map 的 key 有序
(v reflect.Value)
| 40 | |
| 41 | // normalizeValue 递归处理值,确保 map 的 key 有序 |
| 42 | func normalizeValue(v reflect.Value) any { |
| 43 | if !v.IsValid() { |
| 44 | return nil |
| 45 | } |
| 46 | |
| 47 | // 处理指针和接口 |
| 48 | for v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface { |
| 49 | if v.IsNil() { |
| 50 | return nil |
| 51 | } |
| 52 | v = v.Elem() |
| 53 | } |
| 54 | |
| 55 | switch v.Kind() { |
| 56 | case reflect.Map: |
| 57 | return normalizeMap(v) |
| 58 | case reflect.Slice: |
| 59 | return normalizeSlice(v) |
| 60 | case reflect.Array: |
| 61 | return normalizeArray(v) |
| 62 | case reflect.Struct: |
| 63 | return normalizeStruct(v) |
| 64 | default: |
| 65 | // 基本类型直接返回 |
| 66 | if v.CanInterface() { |
| 67 | return v.Interface() |
| 68 | } |
| 69 | return nil |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | // normalizeMap 按 key 排序处理 map |
| 74 | func normalizeMap(v reflect.Value) any { |
no test coverage detected