命令行应用之flag包
1、 flag 基本使用和长短选项
package main
import (
"flag"
"fmt"
)
func main() {
var name string
flag.StringVar(&name, "name", "Go 语言编程之旅", "帮助信息")
flag.StringVar(&name, "n", "Go 语言编程之旅", "帮助信息")
flag.Parse()
fmt.Printf("name: %s", name)
}
2、子命令
package main
import (
"flag"
"fmt"
)
var name string
func main() {
flag.Parse()
args := flag.Args()
if len(args) <= 0 {
return
}
switch args[0] {
case "go":
goCmd := flag.NewFlagSet("go", flag.ExitOnError)
goCmd.StringVar(&name, "name", "Go 语言", "帮助信息")
_ = goCmd.Parse(args[1:])
case "php":
phpCmd := flag.NewFlagSet("php", flag.ExitOnError)
phpCmd.StringVar(&name, "n", "PHP 语言", "帮助信息")
_ = phpCmd.Parse(args[1:])
}
fmt.Printf("name: %s", name)
}
注意:这里需要特别注意的是 flag.NewFlagSet 方法的第二个参数是 ErrorHandling,用于指定处理异常错误的情况处理,其内置提供以下三种模式:
const ( // 返回错误描述 ContinueOnError ErrorHandling = iota // 调用 os.Exit(2) 退出程序 ExitOnError // 调用 panic 语句抛出错误异常 PanicOnError )

浙公网安备 33010602011771号