【发布时间】:2013-11-14 17:33:39
【问题描述】:
我不确定我是否理解这个示例背后的原因(取自 here),也不知道它试图传达的关于 Go 语言的内容:
package main
import (
"flag"
"fmt"
)
func main() {
f := flag.NewFlagSet("flag", flag.ExitOnError)
f.Bool("bool", false, "this is bool flag")
f.Int("int", 0, "this is int flag")
visitor := func(a *flag.Flag) {
fmt.Println(">", a.Name, "value=", a.Value)
}
fmt.Println("Visit()")
f.Visit(visitor)
fmt.Println("VisitAll()")
f.VisitAll(visitor)
// set flags
f.Parse([]string{"-bool", "-int", "100"})
fmt.Println("Visit() after Parse()")
f.Visit(visitor)
fmt.Println("VisitAll() after Parse()")
f.VisitAll(visitor)
}
与他们的设置类似,但随后添加了一个
int_val := f.get("int")
获取命名参数似乎更有用。我对 Go 完全陌生,所以只是想熟悉这种语言。
【问题讨论】:
-
gobyexample.com/command-line-flags 就是一个很好的例子。
-
如果你想传递参数来解析程序
f.Parse([]string{"-bool", "-int", "100"})的代码,你需要一个FlagSet。全局flag.Parse()函数不接受要解析的参数。此代码示例可以在无法提供命令行参数的 go code pad 之旅中运行。