猿问

如何动态解析或内省变量

有没有办法解决或反省从名称字符串中识别的变量?

例如,如果我有一个strVal := "s"与变量名称相对应的字符串值,例如var s string在同一个函数的范围内,我可以动态查找s变量的值吗?

我知道如果这些是结构的字段,我可以使用反射,但对于我的用例,我正在处理不属于结构或映射的局部范围变量。


慕尼黑5688855
浏览 151回答 3
3回答

慕村225694

似乎您从结构中提取了这些信息。package mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "reflect")type Article struct {&nbsp; &nbsp; Id&nbsp; &nbsp; int&nbsp; &nbsp;&nbsp; &nbsp; Title string&nbsp; &nbsp; Price float32&nbsp; &nbsp; Authors []string&nbsp; &nbsp;&nbsp;}func main() {&nbsp; &nbsp; article := Article{}&nbsp; &nbsp; e := reflect.ValueOf(&article).Elem()&nbsp; &nbsp; for i := 0; i < e.NumField(); i++ {&nbsp; &nbsp; &nbsp; &nbsp; name := e.Type().Field(i).Name&nbsp; &nbsp; &nbsp; &nbsp; varType := e.Type().Field(i).Type&nbsp; &nbsp; &nbsp; &nbsp; value := e.Field(i).Interface()&nbsp; &nbsp; &nbsp; &nbsp; fmt.Printf("%v %v %v\n", name, varType, value)&nbsp; &nbsp; }}例子:https://play.golang.org/p/vWkRzpvWKYn

呼唤远方

如果你想在运行时分析一个变量,那么你可以使用像 delve 这样的调试器参考:https ://github.com/go-delve/delve

九州编程

[I]如果我有一个字符串值 strVal := "s" 对应于同一范围内的 var s 字符串的名称,我可以动态查找 s 的值吗?不,一个简单的不。
随时随地看视频慕课网APP

相关分类

Go
我要回答