在不使用反射的情况下,检查接口值是否为nil



我需要检查 interface 值是否为`nil。

但是,通过使用反射它给了我一个错误:

反射:call factry.value.bool on struct value。

通过nil,它没有给出错误 nil value。

接口是一对(type, value),当您将接口与NIL进行比较时,您将对(类型,值)与NIL进行比较。为了比较接口值,您必须将其转换为结构(通过类型断言),或使用反射。

当您知道接口的类型

时,请进行类型断言
if i.(bool) == nil {
}

否则,如果您不知道接口的基本类型,则可能必须使用反射

if reflect.ValueOf(i).IsNil() {
}

有两件事:如果y是零接口本身(在这种情况下y == nil是正确的),或者y是非nil接口,而基础值是零值(在这种情况下,y == nil将为false)。<<<<<<<<<<<</p>

这是一个例子。

相关内容

  • 没有找到相关文章

最新更新