我有一个int/ string/ bool/ etc ..值存储在中,interface{}并且想要确定它是否未初始化,这意味着它的值是
int
string
bool
interface{}
0
""
false
nil
我该如何检查?
据我了解,您想要的是:
func IsZeroOfUnderlyingType(x interface{}) bool { return x == reflect.Zero(reflect.TypeOf(x)).Interface() }
在谈论接口和时nil,人们总是对两个截然不同且无关的事物感到困惑:
据我了解,您正在询问第二件事。
更新 :由于上面的代码的使用==,它对于不可 比较的 类型无效。我相信,使用reflect.DeepEqual()代替将使它适用于所有类型:
==
reflect.DeepEqual()
func IsZeroOfUnderlyingType(x interface{}) bool { return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface()) }