Skip to content

flag

Go語言內置的Flag包實現了命令行參數的解析,Flag包使得開發命令行工具更加簡單。

導入

go
import flag

類型

其支持的類型有:

  • bool
  • int
  • int64
  • uint
  • uint64
  • float
  • float64
  • string
  • duration

定義

使用flag.Type()來定義,返回值是指針

go
name := flag.String("name", "張三", "姓名")
age := flag.Int("age", 15, "年齡")
sex := flag.Bool("sex", true, "性別")

也可以使用flag.TypeVar()來定義

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "張三", "姓名")
flag.IntVar(&age, "age", 15, "年齡")
flag.BoolVar(&sex, "sex", true, "性別")

解析

通過調用flag.Parse()來解析參數,支持的命令行參數格式有如下幾種:

  • -flag xxx
  • --flag xxx
  • -flag=xxx
  • --flag=xxx

布爾類型的參數必須使用等號,Flag解析會在第一個非命令行參數之前停止。

其他

go
func Args() []string //返回所有非命令參數

func NArg() int //返回非命令行參數的個數

func NFlag() int //返回命令行參數的個數

示例

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "張三", "姓名")
flag.IntVar(&age, "age", 15, "年齡")
flag.BoolVar(&sex, "sex", true, "性別")

flag.Parse()
fmt.Println(name, age, sex)

編譯後在命令行啟動程序

powershell
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe
張三 15 true
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -h
Usage of D:\WorkSpace\Code\GoProject\bin\go_build_GoProject_src_main.exe:
  -age int
        年齡 (default 15)
  -name string
        姓名 (default "張三")
  -sex
        性別 (default true)
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -age 15 -name "李四" -sex=false
李四 15 false
PS D:\WorkSpace\Code\GoProject\bin>

Golang學習網由www.golangdev.cn整理維護