草庐IT

反射面

全部标签

go - 如何使用反射来检查结构字段的类型是否为接口(interface){}?

我正在使用反射包来确定结构字段的类型是interface{}我想像这样进行比较(其中t是一个reflect.Type):ift==reflect.TypeOf(interface{}){}问题是编译器报错:typeinterface{}isnotanexpression。有没有办法检查结构字段的类型是否为接口(interface){}? 最佳答案 您可以通过创建一个nil实例并使用反射来获取接口(interface)Y的类型:yType:=reflect.TypeOf((*Y)(nil)).Elem()然后使用表达式reflect.

go - 为什么反射要与 UNEXPORTED Struct 和 Unexported Fields 一起使用?

我希望在代码中使用结构Dish导出为Dish。当未导出结构dish并且看不到其中未导出的字段时,我预计程序会失败。(好的,我可以看到未导出的字段出现在导出的结构中,但即使这样似乎也是错误的)。但是程序仍然可以正常工作??没有导出的反射包怎么能看到'dish'?------------程序如下--------//修改示例来自博客:http://merbist.com/2011/06/27/golang-reflection-exampl/packagemainimport("fmt""reflect")funcmain(){//iteratethroughtheattributesofa

go - 为什么反射要与 UNEXPORTED Struct 和 Unexported Fields 一起使用?

我希望在代码中使用结构Dish导出为Dish。当未导出结构dish并且看不到其中未导出的字段时,我预计程序会失败。(好的,我可以看到未导出的字段出现在导出的结构中,但即使这样似乎也是错误的)。但是程序仍然可以正常工作??没有导出的反射包怎么能看到'dish'?------------程序如下--------//修改示例来自博客:http://merbist.com/2011/06/27/golang-reflection-exampl/packagemainimport("fmt""reflect")funcmain(){//iteratethroughtheattributesofa

go - 如何获取源代码中的变量名(使用反射)

我正在尝试构建一个易于使用的模板系统。基本上我只想创建一个包含不同变量(strings)的slice,然后遍历slice并将标记{{}}替换为实际值。因此,如果变量“name”是onevar,它将在模板中查找{{onevar}}并将其替换为实际值变量。问题:如何获取变量名?基本上是源代码中的内容。可能吗?我已经用反射尝试过一些东西,但似乎我做对了。见下文onevar:="something"other:="somethingelse"varmsgstringsa:=[]string{onevar,other}for_,v:=rangesa{vName:=reflect.TypeOf(v

go - 如何获取源代码中的变量名(使用反射)

我正在尝试构建一个易于使用的模板系统。基本上我只想创建一个包含不同变量(strings)的slice,然后遍历slice并将标记{{}}替换为实际值。因此,如果变量“name”是onevar,它将在模板中查找{{onevar}}并将其替换为实际值变量。问题:如何获取变量名?基本上是源代码中的内容。可能吗?我已经用反射尝试过一些东西,但似乎我做对了。见下文onevar:="something"other:="somethingelse"varmsgstringsa:=[]string{onevar,other}for_,v:=rangesa{vName:=reflect.TypeOf(v

go - GoLang 上的反射错误 - 参数太少

我有这个Controller:packagewebimport("net/http")funcinit(){}func(controller*Controller)Index(r*http.Request)(string,int){return"Testing",http.StatusOK}使用这个处理程序:typeApplicationstruct{}func(application*Application)Route(controllerinterface{},routestring)http.HandlerFunc{returnfunc(whttp.ResponseWriter,

go - GoLang 上的反射错误 - 参数太少

我有这个Controller:packagewebimport("net/http")funcinit(){}func(controller*Controller)Index(r*http.Request)(string,int){return"Testing",http.StatusOK}使用这个处理程序:typeApplicationstruct{}func(application*Application)Route(controllerinterface{},routestring)http.HandlerFunc{returnfunc(whttp.ResponseWriter,

memory - GoLang - 有没有办法分析使用反射的代码的内存使用情况?

我在项目中使用gocraft/web并尝试调试一些高内存使用情况。gocraft/web使用反射来调用处理程序。我已经设置了运行良好的net/http/pprof分析器,但是最大的内存块,以及我感兴趣的内存块,只显示reflect.Value.call作为函数。这不是很有帮助。我如何绕过gocraft/web使用反射的事实并深入挖掘内存配置文件?这是我看到的配置文件输出示例: 最佳答案 感谢@thwd提交http://golang.org/issue/11786对这个。这是pprof中的显示问题。所有数据都在那里,只是被隐藏了。您可

memory - GoLang - 有没有办法分析使用反射的代码的内存使用情况?

我在项目中使用gocraft/web并尝试调试一些高内存使用情况。gocraft/web使用反射来调用处理程序。我已经设置了运行良好的net/http/pprof分析器,但是最大的内存块,以及我感兴趣的内存块,只显示reflect.Value.call作为函数。这不是很有帮助。我如何绕过gocraft/web使用反射的事实并深入挖掘内存配置文件?这是我看到的配置文件输出示例: 最佳答案 感谢@thwd提交http://golang.org/issue/11786对这个。这是pprof中的显示问题。所有数据都在那里,只是被隐藏了。您可

string - 如何在 Go 中使用反射设置一个指向字符串的结构成员

我正在尝试使用反射来设置指针。elasticbeanstalk.CreateEnvironmentInput有一个SolutionStackName字段,它是*string类型。当我尝试设置任何值时出现以下错误:panic:reflect:callofreflect.Value.SetPointeronptrValue这是我的代码:...newEnvCnf:=new(elasticbeanstalk.CreateEnvironmentInput)checkConfig2(newEnvCnf,"SolutionStackName","teststring")...funccheckCon