func assert(v any) {
if v == nil {
fmt.Println("v is nil")
} else {
fmt.Println("v is NOT nil")
}
}
type class struct{}
func main() {
var c *class
if c == nil {
fmt.Println("c is nil")
}
assert(c)
}
该程序将输出:
c is nil
v is NOT nil
要真正知道 v 为零,我必须重写
assert
:
func assert(v any) {
if v == nil || reflect.ValueOf(v).IsNil() {
fmt.Println("v is nil")
} else {
fmt.Println("v is NOT nil")
}
}
我知道原因,也完全理解Go在这件事上的设计。我的问题是:
reflect.ValueOf()
对性能有何影响?v
中的参数 assert(v)
必须 类型为 any
。