...
1 package anynil
2
3 import "reflect"
4
5
6 func Is(value any) bool {
7 if value == nil {
8 return true
9 }
10
11 refVal := reflect.ValueOf(value)
12 switch refVal.Kind() {
13 case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.UnsafePointer, reflect.Interface, reflect.Slice:
14 return refVal.IsNil()
15 default:
16 return false
17 }
18 }
19
20
21 func Normalize(v any) any {
22 if Is(v) {
23 return nil
24 }
25 return v
26 }
27
28
29
30 func NormalizeSlice(s []any) {
31 for i := range s {
32 if Is(s[i]) {
33 s[i] = nil
34 }
35 }
36 }
37
View as plain text