英文:
check if unknown interface{} is empty
问题
你好,我想知道如何在Go语言中验证一个interface{}
是否为空。
我尝试了reflect.TypeOf(v) == nil
,但它总是返回false
。
var h Bar
var t Foo
pointers := make([]interface{}, 0)
pointers = append(pointers, &h)
pointers = append(pointers, &t)
func test(byteValue []byte, data []interface{}) {
for _, v := range data {
fmt.Println(reflect.TypeOf(v) == nil)
if err := lib.Unmarshal(byteValue, v); err == nil {
fmt.Println(err)
}
}
}
请帮我翻译以上内容。
英文:
Hello I would like to know how I would be able to validate in Go if an interface{}
is empty.
I tried reflect.TypeOf(v) == nil
, but it always returns false
.
var h Bar
var t Foo
pointers := make([]interface{}, 0)
pointers = append(pointers, &h)
pointers = append(pointers, &t)
func test(byteValue []byte, data []interface{}) {
for _, v := range data {
fmt.Println(reflect.TypeOf(v) == nil)
if err := lib.Unmarshal(byteValue, v); err == nil {
fmt.Println(err)
}
}
}
答案1
得分: 6
func isZero(v interface{}) bool {
// reflect.ValueOf会在值为nil时引发panic。
if v == nil {
return true
}
return reflect.ValueOf(v).IsZero()
}
英文:
func isZero(v interface{}) bool {
// reflect.ValueOf will panic on a nil value.
if v == nil {
return true
}
return reflect.ValueOf(v).IsZero()
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论