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

hey*_*hey 8 go

我正在尝试构建一个易于使用的模板系统。基本上我只想用不同的变量(字符串)创建一个切片,然后遍历切片并用{{}}实际值替换标记。因此,如果变量 ' name' 是onevar,它将在模板中查找{{onevar}}并将其替换为变量的实际值。

问题:如何获取变量名?基本上是源代码中的内容。是否可以 ?我已经尝试过一些带有反射的东西,但似乎我做对了。见下图

onevar := "something"
other := "something else"

var msg string
    sa := []string{onevar, other}
    for _, v := range sa {
        vName := reflect.TypeOf(v).Name()
        vName = fmt.Sprintf("{{%s}}", vName)
        msg = strings.Replace(msg, vName, v, -1)
    }
Run Code Online (Sandbox Code Playgroud)

Vol*_*ker 3

你不能做这样的事。该切片不包含变量只包含它们的,因此您无法获取它们的名称。只需使用地图即可。