go - 如何知道 Golang 中任意类型的变量是否为零?

标签 go reflection go-reflect

因为并非所有类型都具有可比性,例如一片。所以我们不能这样做

var v ArbitraryType
v == reflect.Zero(reflect.TypeOf(v)).Interface()

最佳答案

Go 1.13 在 reflect 包中引入了 Value.IsZero 方法。这是使用它检查零值的方法:

if reflect.ValueOf(v).IsZero() {
    // v is zero, do something
}

除了基本类型外,它还适用于 Chan、Func、Array、Interface、Map、Ptr、Slice、UnsafePointer 和 Struct。

关于go - 如何知道 Golang 中任意类型的变量是否为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33115946/

相关文章:

google-app-engine - Go http包如何发送204 No Content?

android - 在继承方法上使用反射的正确方法

Java类反射: init external class with wild card parameters

Java自定义注解和动态加载

go - 反射 - 方法调用出现 "call of reflect.Value.Elem on struct Value" panic

go - 采用不同类型结构的函数

JSON 响应 : return nested JSON

go - channel 未检测到 SIGCONT

go - GO 例程中缓冲 channel 范围的输出中断

go - 在 Go 中按名称调用结构及其方法?