Go语言使用flag包时为何无法通过指针获取更新后的返回值
2021年9月26日更新
这是一个很基础的问题。
原因是flag变量会在调用flag.Parse()之后才会被更新。
nReq := *flag_var flag.Parse() // flag_var update fmt.Println(nReq) // nReq is unchanged.
因此最佳实践是使用flag.IntVar(),代码写法也更简洁。
问题:为什么不能直接解引用flag返回值的指针?
错误写法如下,运行后总是返回默认值:
// test.go nReq := *flag.Int("n", 10000, "set total requests") flag.Parse() fmt.Println(nReq) // 运行命令:test -n 200 // 输出结果:10000 // 取值仍然是默认值10000
需要使用如下写法才能正常获取传入的参数:
nReq := flag.Int("n", 10000, "set total requests") flag.Parse() fmt.Println(*nReq) // 运行命令:test -n 200 // 输出结果:200 // 值已更新为传入的新flag值200
内容的提问来源于stack exchange,提问作者fripSide
相关产品推荐
相关产品推荐

