Go 中通过反射快速检测空值
在处理存储 int、string、bool 或其他值的接口时,通常需要确定存储的值是否未初始化。这意味着检查它是否等于以下任何一个:
解决方案:
要在 Go 中有效地检查这一点,您可以利用反射和 Reflect.Zero()函数:
func IsZeroOfUnderlyingType(x interface{}) bool { return x == reflect.Zero(reflect.TypeOf(x)).Interface() }
说明:
注意:
原始解决方案使用 == 进行比较,这可能不适用于不可比较的类型。为了确保通用兼容性,您可以使用reflect.DeepEqual()代替:
func IsZeroOfUnderlyingType(x interface{}) bool { return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface()) }
以上是如何利用反射快速检测Go接口中的空值?的详细内容。更多信息请关注PHP中文网其他相关文章!