fix(reflectutil): correct pointer type check in dereference logic

This commit is contained in:
2026-06-26 00:27:25 +02:00
parent 1cd9cd8803
commit 651c7aa3f4
2 changed files with 13 additions and 8 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ import (
// Deref dereferences pointers until it reaches a non-pointer value
// Returns the dereferenced value and true if successful, or the original value and false if nil
func Deref(v reflect.Value) (reflect.Value, bool) {
for v.Kind() == reflect.Ptr {
for v.Kind() == reflect.Pointer {
if v.IsNil() {
return v, false
}
+12 -7
View File
@@ -60,7 +60,7 @@ func Has(m interface{}, key interface{}) bool {
v := reflect.ValueOf(m)
// Dereference pointers
for v.Kind() == reflect.Ptr {
for v.Kind() == reflect.Pointer {
if v.IsNil() {
return false
}
@@ -102,7 +102,7 @@ func Merge(maps ...interface{}) map[interface{}]interface{} {
v := reflect.ValueOf(m)
// Dereference pointers
for v.Kind() == reflect.Ptr {
for v.Kind() == reflect.Pointer {
if v.IsNil() {
continue
}
@@ -129,7 +129,7 @@ func Pick(m interface{}, keys ...interface{}) map[interface{}]interface{} {
v := reflect.ValueOf(m)
// Dereference pointers
for v.Kind() == reflect.Ptr {
for v.Kind() == reflect.Pointer {
if v.IsNil() {
return result
}
@@ -158,7 +158,7 @@ func Omit(m interface{}, keys ...interface{}) map[interface{}]interface{} {
v := reflect.ValueOf(m)
// Dereference pointers
for v.Kind() == reflect.Ptr {
for v.Kind() == reflect.Pointer {
if v.IsNil() {
return result
}
@@ -237,7 +237,7 @@ func Pluck(slice interface{}, field string) []interface{} {
v := reflect.ValueOf(slice)
// Dereference pointers
for v.Kind() == reflect.Ptr {
for v.Kind() == reflect.Pointer {
if v.IsNil() {
return []interface{}{}
}
@@ -253,13 +253,18 @@ func Pluck(slice interface{}, field string) []interface{} {
item := v.Index(i)
// Dereference item pointers
for item.Kind() == reflect.Ptr {
nilItem := false
for item.Kind() == reflect.Pointer {
if item.IsNil() {
result = append(result, nil)
continue
nilItem = true
break
}
item = item.Elem()
}
if nilItem {
continue
}
switch item.Kind() {
case reflect.Struct: