猿问

如何动态解析或内省变量

有没有办法解析或内省从其名称字符串标识的变量?

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

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


慕的地8271018
浏览 122回答 3
3回答

梦里花落0921

看来您是从结构中提取此信息的。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 这样的调试器

阿晨1998

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

相关分类

Go
我要回答