diff --git a/container/gvar/gvar_z_unit_is_test.go b/container/gvar/gvar_z_unit_is_test.go index c1b9daae7e9..b3ce85dfbf7 100644 --- a/container/gvar/gvar_z_unit_is_test.go +++ b/container/gvar/gvar_z_unit_is_test.go @@ -9,6 +9,7 @@ package gvar_test import ( "testing" + "github.com/gogf/gf/v2/container/gvar" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/test/gtest" ) @@ -144,6 +145,10 @@ func TestVar_IsMap(t *testing.T) { t.Assert(g.NewVar(int8(1)).IsMap(), false) t.Assert(g.NewVar(uint8(1)).IsMap(), false) }) + gtest.C(t, func(t *gtest.T) { + t.Assert(gvar.New(gvar.New("asd")).IsMap(), false) + t.Assert(gvar.New(&g.Map{"k": "v"}).IsMap(), true) + }) } func TestVar_IsStruct(t *testing.T) { diff --git a/internal/utils/utils_is.go b/internal/utils/utils_is.go index 39d450e83bd..e7fa2e3388f 100644 --- a/internal/utils/utils_is.go +++ b/internal/utils/utils_is.go @@ -74,6 +74,7 @@ func IsMap(value interface{}) bool { ) for reflectKind == reflect.Ptr { reflectValue = reflectValue.Elem() + reflectKind = reflectValue.Kind() } switch reflectKind { case reflect.Map: