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

如何动态解析或内省变量

如何动态解析或内省变量

Go
慕的地8271018 2023-08-14 17:06:19
有没有办法解析或内省从其名称字符串标识的变量?例如,如果我有一个与strVal := "s"变量名称相对应的字符串值(例如var s string在同一函数的作用域中),我可以动态查找该s变量的值吗?我知道如果这些是结构体的字段,我可以使用反射,但对于我的用例,我正在处理不属于结构体或映射的局部范围变量。
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

看来您是从结构中提取此信息的。


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


查看完整回答
反对 回复 2023-08-14
?
九州编程

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

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


查看完整回答
反对 回复 2023-08-14
?
阿晨1998

TA贡献2037条经验 获得超6个赞

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

不,非常简单的不。


查看完整回答
反对 回复 2023-08-14
  • 3 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

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