diff --git a/internal/utils/utils_is.go b/internal/utils/utils_is.go index d90f9215e..39d450e83 100644 --- a/internal/utils/utils_is.go +++ b/internal/utils/utils_is.go @@ -57,6 +57,7 @@ func IsSlice(value interface{}) bool { ) for reflectKind == reflect.Ptr { reflectValue = reflectValue.Elem() + reflectKind = reflectValue.Kind() } switch reflectKind { case reflect.Slice, reflect.Array: diff --git a/internal/utils/utils_z_unit_is_test.go b/internal/utils/utils_z_unit_is_test.go index 46ac53f3a..e215d91ae 100644 --- a/internal/utils/utils_z_unit_is_test.go +++ b/internal/utils/utils_z_unit_is_test.go @@ -9,8 +9,10 @@ package utils_test import ( "testing" + "github.com/gogf/gf/v2/container/gvar" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/internal/utils" + "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/test/gtest" ) @@ -124,6 +126,9 @@ func TestVar_IsSlice(t *testing.T) { t.Assert(utils.IsSlice(int8(1)), false) t.Assert(utils.IsSlice(uint8(1)), false) }) + gtest.C(t, func(t *gtest.T) { + t.Assert(utils.IsSlice(gvar.New(gtime.Now()).IsSlice()), false) + }) } func TestVar_IsMap(t *testing.T) {