ir a analizar el paquete de indicadores de parámetros de la línea de comando

contenido

1. Obtener parámetros de línea de comando

En segundo lugar, el uso básico del paquete de banderas.

1. Tipo de parámetro de bandera

2. Defina el parámetro de la bandera de la línea de comando

3, marca otras funciones

4. Ejemplo completo de paquete de banderas


El paquete de banderas integrado en el lenguaje Go implementa el análisis de los parámetros de la línea de comandos, y el paquete de banderas facilita el desarrollo de herramientas de línea de comandos.

1. Obtener parámetros de línea de comando

os.Args: si simplemente desea obtener argumentos de línea de comando, puede usar os.Args para obtener argumentos de línea de comando como en el ejemplo de código a continuación.

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)
        }
    }
}

Después de compilar el código anterior con go build -o "args_demo", ejecute:

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

os.Args es un segmento de cadena que almacena argumentos de línea de comando y su primer elemento es el nombre del ejecutable.

En segundo lugar, el uso básico del paquete de banderas.

import flag

1. Tipo de parámetro de bandera

Los tipos de parámetros de línea de comando admitidos por el paquete de banderas son bool, int, int64, uint, uint64, float float64, string, duration.

parámetro de bandera

valor válido

bandera de cadena

cadena legal

Bandera de entero

1234, 0664, 0x1234 y otros tipos, también pueden ser negativos.

bandera flotante

número de punto flotante legal

indicador de tipo bool

1, 0, t, f, T, F, verdadero, falso, VERDADERO, FALSO, Verdadero, Falso。

bandera de período de tiempo

Cualquier cadena de período de tiempo válida. Como "300ms", "-1.5h", "2h45m".

Las unidades legales son "ns", "us" / "µs", "ms", "s", "m", "h".

2. Defina el parámetro de la bandera de la línea de comando

Hay dos formas comunes de definir parámetros de marca de línea de comandos.

bandera.Tipo()

El formato básico es el siguiente:

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

Por ejemplo, si queremos definir tres parámetros de línea de comando de nombre, edad y matrimonio, podemos definirlo de la siguiente manera:

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

Cabe señalar que en este momento, nombre, edad, casado y retraso son todos indicadores del tipo correspondiente.

bandera.TypeVar()

El formato básico es el siguiente: flag.TypeVar(Type pointer, flag name, default value, help information) Por ejemplo, si queremos definir tres parámetros de línea de comando de nombre, edad y matrimonio, podemos definirlo de la siguiente manera:

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, "时间间隔")

La variable obtenida por flag.TypeVar(), no un puntero, se puede usar directamente

Observaciones: Los parámetros de línea de comando anteriores se pueden obtener a través de flag.Type() y flag.TypeVar(). Después de obtenerlos, debe usar flag.Parse() para analizar

bandera.Analizar()

Después de definir los parámetros de la bandera de la línea de comandos mediante los dos métodos anteriores, los parámetros de la línea de comandos deben analizarse llamando a flag.Parse().

Los formatos de parámetros de línea de comando admitidos son los siguientes:

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

Entre ellos, los parámetros de tipo booleano deben especificarse mediante el signo igual.

El análisis de indicadores se detiene antes del primer argumento que no sea indicador (un solo "-" no es un argumento de indicador) o después del terminador "-".

3, marca otras funciones

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

4. Ejemplo completo de paquete de banderas

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 de la línea de comandos:

1) Consejos para usar parámetros de línea de comandos:

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

2) Use el parámetro de bandera de línea de comando normalmente:

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

3) Use argumentos de línea de comando que no sean de bandera:

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

Supongo que te gusta

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