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

Aeg*_*Dev -3 reflection go

您好,我想知道如果 aninterface{}为空,我将如何在 Go 中进行验证。我尝试过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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Emi*_*els 7

func isZero(v interface{}) bool {
    // reflect.ValueOf will panic on a nil value.
    if v == nil {
        return true
    }
    return reflect.ValueOf(v).IsZero()
}
Run Code Online (Sandbox Code Playgroud)

例子