我需要检查 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>
这是一个例子。