Skip to content

flag

O pacote Flag integrado na linguagem Go implementa a análise de parâmetros de linha de comando. O pacote Flag torna o desenvolvimento de ferramentas de linha de comando mais simples.

Importação

go
import flag

Tipos

Os tipos suportados são:

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

Definição

Use flag.Type() para definir, o valor de retorno é um ponteiro:

go
name := flag.String("name", "张三", "Nome")
age := flag.Int("age", 15, "Idade")
sex := flag.Bool("sex", true, "Sexo")

Também pode usar flag.TypeVar() para definir:

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "Nome")
flag.IntVar(&age, "age", 15, "Idade")
flag.BoolVar(&sex, "sex", true, "Sexo")

Análise

Analise os parâmetros chamando flag.Parse(). Os formatos de parâmetros de linha de comando suportados são os seguintes:

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

Parâmetros do tipo booleano devem usar o sinal de igual. A análise de Flag será interrompida antes do primeiro parâmetro que não seja de linha de comando.

Outros

go
func Args() []string // Retorna todos os parâmetros que não são de linha de comando

func NArg() int // Retorna o número de parâmetros que não são de linha de comando

func NFlag() int // Retorna o número de parâmetros de linha de comando

Exemplo

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "Nome")
flag.IntVar(&age, "age", 15, "Idade")
flag.BoolVar(&sex, "sex", true, "Sexo")

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

Após compilar, inicie o programa na linha de comando:

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
        Idade (default 15)
  -name string
        Nome (default "张三")
  -sex
        Sexo (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 por www.golangdev.cn edit