vá analisar o pacote de sinalizador de parâmetro de linha de comando

contente

1. Obtenha parâmetros de linha de comando

Segundo, o uso básico do pacote flag

1. Tipo de parâmetro de sinalização

2. Defina o parâmetro de sinalização da linha de comando

3, sinalizar outras funções

4. Exemplo completo do pacote de sinalizadores


O pacote flag embutido na linguagem Go implementa a análise de parâmetros de linha de comando, e o pacote flag facilita o desenvolvimento de ferramentas de linha de comando.

1. Obtenha parâmetros de linha de comando

os.Args: Se você simplesmente deseja obter argumentos de linha de comando, você pode usar os.Args para obter argumentos de linha de comando como no exemplo de código abaixo.

package main

import (
    "fmt"
    "os"
)

//os.Args demo
func main() {
    //os.Args是一个[]string
    if len(os.Args) > 0 {
        for index, arg := range os.Args {
            fmt.Printf("args[%d]=%v\n", index, arg)
        }
    }
}

Depois de compilar o código acima com go build -o "args_demo", execute:

$ ./args_demo a b c d
args[0]=./args_demo
args[1]=a
args[2]=b
args[3]=c
args[4]=d

os.Args é uma fatia de string que armazena argumentos de linha de comando e seu primeiro elemento é o nome do executável.

Segundo, o uso básico do pacote flag

import flag

1. Tipo de parâmetro de sinalização

Os tipos de parâmetros de linha de comando suportados pelo pacote flag são bool, int, int64, uint, uint64, float float64, string, duration.

parâmetro de sinalização

Valor válido

bandeira de string

seqüência legal

Sinalizador de inteiro

1234, 0664, 0x1234 e outros tipos, também podem ser negativos.

bandeira flutuante

número de ponto flutuante legal

sinalizador tipo bool

1, 0, t, f, T, F, verdadeiro, falso, VERDADEIRO, FALSO, Verdadeiro, Falso。

bandeira do período de tempo

Qualquer string de período de tempo válida. Como "300ms", "-1,5h", "2h45m".

As unidades legais são "ns", "us" / "µs", "ms", "s", "m", "h".

2. Defina o parâmetro de sinalização da linha de comando

Há duas maneiras comuns de definir parâmetros de sinalizador de linha de comando.

flag.Type()

O formato básico é o seguinte:

flag.Type(flag名, 默认值, 帮助信息)*Type

Por exemplo, se quisermos definir três parâmetros de linha de comando de nome, idade e casamento, podemos defini-los da seguinte forma:

name := flag.String("name", "张三", "姓名")
age := flag.Int("age", 18, "年龄")
married := flag.Bool("married", false, "婚否")
delay := flag.Duration("d", 0, "时间间隔")

Deve-se notar que, neste momento, nome, idade, casado e atraso são todos indicadores do tipo correspondente.

flag.TypeVar()

O formato básico é o seguinte: flag.TypeVar(Ponteiro de tipo, nome do sinalizador, valor padrão, informações de ajuda) Por exemplo, se quisermos definir três parâmetros de linha de comando de nome, idade e casamento, podemos defini-lo da seguinte forma:

var name string
var age int
var married bool
var delay time.Duration

flag.StringVar(&name, "name", "张三", "姓名")
flag.IntVar(&age, "age", 18, "年龄")
flag.BoolVar(&married, "married", false, "婚否")
flag.DurationVar(&delay, "d", 0, "时间间隔")

A variável obtida por flag.TypeVar(), não um ponteiro, pode ser usada diretamente

Observações: Os parâmetros de linha de comando acima podem ser obtidos através de flag.Type() e flag.TypeVar(). Após a obtenção, você deve usar flag.Parse() para analisar

flag.Parse()

Depois que os parâmetros do sinalizador da linha de comando são definidos pelos dois métodos acima, os parâmetros da linha de comando precisam ser analisados ​​chamando flag.Parse().

Os formatos de parâmetro de linha de comando suportados são os seguintes:

-flag xxx (使用空格,一个-符号)
--flag xxx (使用空格,两个-符号)
-flag=xxx (使用等号,一个-符号)
--flag=xxx (使用等号,两个-符号)

Entre eles, os parâmetros do tipo booleano devem ser especificados usando o sinal de igual.

A análise do sinalizador para antes do primeiro argumento não sinalizador (um único "-" não é um argumento sinalizador) ou após o terminador "-".

3, sinalizar outras funções

flag.Args() 返回命令行参数后的其他参数,以[]string类型
flag.NArg() //返回命令行参数后的其他参数个数
flag.NFlag() //返回使用的命令行参数个数

4. Exemplo completo do pacote de sinalizadores

func main() {
    //定义命令行参数方式1
    var name string
    var age int
    var married bool
    var delay time.Duration
    
    flag.StringVar(&name, "name", "张三", "姓名")
    flag.IntVar(&age, "age", 18, "年龄")
    flag.BoolVar(&married, "married", false, "婚否")
    flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")

    //解析命令行参数
    flag.Parse()
    fmt.Println(name, age, married, delay)
   
     //返回命令行参数后的其他参数,这是个数组
    fmt.Println(flag.Args())
    
    //返回使用的命令行参数个数
    fmt.Println(flag.NFlag())
    
    //返回命令行参数后的其他参数个数
    fmt.Println(flag.NArg())
}

Uso da linha de comando:

1) Dicas para usar parâmetros de linha de comando:

$ ./flag_demo -help
Usage of ./flag_demo:
  -age int
        年龄 (default 18)
  -d duration
        时间间隔
  -married
        婚否
  -name string
        姓名 (default "张三")

2) Use o parâmetro sinalizador de linha de comando normalmente:

$ ./flag_demo -name pprof --age 28 -married=false -d=1h30m
pprof 28 false 1h30m0s
[]
0
4

3) Use argumentos de linha de comando que não sejam sinalizadores:

$ ./flag_demo a b c
张三 18 false 0s
[a b c]
3
0

Acho que você gosta

Origin blog.csdn.net/demored/article/details/124295528
Recomendado
Clasificación