我可以在golang中获取指向map值的指针吗?

时间:2013-08-08 07:05:36

标签: go

我正在尝试使用Go的旗帜包动态生成FlagSets,并在flagname的地图中收集结果 - >标志值。

我的代码如下所示:

import "flag"

fs := flag.NewFlagSet(strings.Join(commands, " "), flag.ExitOnError)
requiredFlags := []string{"flagA", "flagB"}
flags := make(map[string]string)

for _, f := range requiredFlags { 
    flags[f] = *fs.String(f, "", "") 
}  

此代码编译,但在解析FlagSet fs后,映射永远不会更新,因此“flagA”和“flagB”的值都是“”。所以这对我有意义; flags的类型为map [string] string,而不是map [string] * string。不幸的是,我似乎无法使用指针解决这个问题。我已经尝试了我能想到的每个引用和解除引用的组合,我最终得到了一个nil指针解引用(运行时错误)或无效的间接(编译时错误)。

如何设置地图和FlagSet,以便在解析FlagSet后填充地图值?

1 个答案:

答案 0 :(得分:4)

有什么问题
flags := make(map[string]*string)
for _, f := range requiredFlags { 
    flags[f] = fs.String(f, "", "") 
}
...
println(*(flags["flagA"]))