我不确定我理解这个例子的推理(摘自这里),也不知道它想要传达关于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的新手,所以只是试图熟悉这种语言。
f.Parse([]string{"-bool", "-int", "100"})
中传递参数,则需要使用FlagSet。全局的flag.Parse()
函数不接受解析参数。此代码示例可以在Go代码编辑器中运行,其中无法提供命令行参数。 - chmike