go - 如何检查 reflect.Value 是否为零?
问题描述
我有这个代码:
package main
import (
"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>
.
解决方案
用于.IsNil()
检查是否存储在reflect.Value
is中的值nil
。
if result[1].IsNil() {
fmt.Println("ok")
}
或者您可以使用.Interface()
获取存储的实际值reflect.Value
并检查。感谢@mkopriva 指出。
if result[1].Interface() == nil {
fmt.Println("ok")
}
推荐阅读
- botframework - 如果我的端点不可访问或返回 500,活动会发生什么?
- react-native - React Native:函数组件还是类组件方法?
- python - 即使安装后,命令提示符中也没有名为 numpy 的模块
- python-3.x - 无法捕获 boto3 batch_writer 异常
- javascript - 检查对象是否从 API 调用返回值,在另一个文件中
- javascript - 正则表达式获取 () 之间的字符串
- javascript - 在静态 Nginx 服务器上部署 React 应用程序时遇到问题
- css - 域名更改后 WordPress 网站坏了。(CSS)
- php - 刷新数据表而不重新加载页面
- react-native - GeoFire 与本机反应