检查未知接口{}是否为空。

huangapple go评论96阅读模式
英文:

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()
}

Example

huangapple
  • 本文由 发表于 2021年7月30日 03:11:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/68581717.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定