我有这个代码:package mainimport ( "fmt" "reflect")type cmd struct{ Echo func(string) (string,error)}func main() { cmd := cmd{ Echo : func(arg string) (string, error) { return arg, nil }, } result := reflect.ValueOf(cmd).FieldByName("Echo").Call([]reflect.Value{reflect.ValueOf("test")}) if result[1] == nil{ fmt.Println("ok") }}我想检查我的错误是否为零,但在我的代码中,它不起作用,因为它有不同的类型。我试着这样做:reflect[1] == reflect.Value(reflect.ValueOf(nil))所以它具有相同的类型,但值reflect.Value(reflect.ValueOf(nil))不是 nil,它是<invalid reflect.Value>.
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
用于.IsNil()检查是否存储在reflect.Valueis中的值nil。
if result[1].IsNil() {
fmt.Println("ok")
}
或者您可以使用.Interface()获取存储的实际值reflect.Value并检查。感谢@mkopriva 指出。
if result[1].Interface() == nil {
fmt.Println("ok")
}
- 1 回答
- 0 关注
- 170 浏览
添加回答
举报
0/150
提交
取消