Reflection 为什么int32(0)不等于Golang中的类型零?

Reflection 为什么int32(0)不等于Golang中的类型零?,reflection,go,swagger,Reflection,Go,Swagger,我在go swagger软件包中发现了这种验证 // Required validates an interface for requiredness func Required(path, in string, data interface{}) *errors.Validation { val := reflect.ValueOf(data) if reflect.DeepEqual(reflect.Zero(val.Type()), val) { retur

我在go swagger软件包中发现了这种验证

// Required validates an interface for requiredness
func Required(path, in string, data interface{}) *errors.Validation {
    val := reflect.ValueOf(data)
    if reflect.DeepEqual(reflect.Zero(val.Type()), val) {
        return errors.Required(path, in)
    }
    return nil
}
我试着使用它,它迫使我思考

为什么下面的说法不正确

exper := int32(0)
reflect.DeepEqual(
   reflect.Zero(reflect.ValueOf(exper).Type()), 
   reflect.ValueOf(exper)
)
请检查
reflect.Value的值

对两个值使用==不会比较它们的基础值 表示,而不是值结构的内容。比照 两个值,比较接口方法的结果

请检查
reflect.Value的值

对两个值使用==不会比较它们的基础值 表示,而不是值结构的内容。比照 两个值,比较接口方法的结果

package main

import "reflect"

func main() {
  //var i int32
  exper := int32(0)
  r := reflect.DeepEqual(
    reflect.Zero(reflect.ValueOf(exper).Type()).Interface(),
    reflect.ValueOf(exper).Interface(),
  )
  println(r)  // true 
}