为了账号安全,请及时绑定邮箱和手机立即绑定

如何动态解析或内省变量

如何动态解析或内省变量

Go
慕尼黑5688855 2022-04-26 15:59:18
有没有办法解决或反省从名称字符串中识别的变量?例如,如果我有一个strVal := "s"与变量名称相对应的字符串值,例如var s string在同一个函数的范围内,我可以动态查找s变量的值吗?我知道如果这些是结构的字段,我可以使用反射,但对于我的用例,我正在处理不属于结构或映射的局部范围变量。
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

似乎您从结构中提取了这些信息。


package main


import (

    "fmt"

    "reflect"


)


type Article struct {

    Id    int   

    Title string

    Price float32

    Authors []string    

}


func main() {


    article := Article{}


    e := reflect.ValueOf(&article).Elem()


    for i := 0; i < e.NumField(); i++ {

        name := e.Type().Field(i).Name

        varType := e.Type().Field(i).Type

        value := e.Field(i).Interface()

        fmt.Printf("%v %v %v\n", name, varType, value)

    }

}

例子:


https://play.golang.org/p/vWkRzpvWKYn


查看完整回答
反对 回复 2022-04-26
?
呼唤远方

TA贡献1856条经验 获得超11个赞

如果你想在运行时分析一个变量,那么你可以使用像 delve 这样的调试器

参考:https ://github.com/go-delve/delve


查看完整回答
反对 回复 2022-04-26
?
九州编程

TA贡献1785条经验 获得超4个赞

[I]如果我有一个字符串值 strVal := "s" 对应于同一范围内的 var s 字符串的名称,我可以动态查找 s 的值吗?

不,一个简单的不。


查看完整回答
反对 回复 2022-04-26
  • 3 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信