Buscar..


Argumentos de línea de comando

El análisis de los argumentos de la línea de comando es Go es muy similar a otros idiomas. En su código, solo tiene acceso a una porción de argumentos donde el primer argumento será el nombre del programa en sí.

Ejemplo rápido:

package main

import (
    "fmt"
    "os"
)

func main() {

    progName := os.Args[0]
    arguments := os.Args[1:]

    fmt.Printf("Here we have program '%s' launched with following flags: ", progName)

    for _, arg := range arguments {
        fmt.Printf("%s ", arg)
    }

    fmt.Println("")
}

Y la salida sería:

$ ./cmd test_arg1 test_arg2
Here we have program './cmd' launched with following flags: test_arg1 test_arg2

Cada argumento es sólo una cadena. En os paquete que parece: var Args []string

Banderas

Ir biblioteca estándar proporciona el paquete flag que ayuda con banderas de análisis pasados al programa.

Tenga en cuenta que el paquete de flag no proporciona las banderas habituales de estilo GNU. Eso significa que las banderas de varias letras deben iniciarse con un guión único como este: -exampleflag , no esto: --exampleflag . Las banderas de estilo GNU se pueden hacer con algún paquete de terceros.

package main

import (
    "flag"
    "fmt"
)

func main() {

    // basic flag can be defined like this:
    stringFlag := flag.String("string.flag", "default value", "here comes usage")
    // after that stringFlag variable will become a pointer to flag value

    // if you need to store value in variable, not pointer, than you can
    // do it like:
    var intFlag int
    flag.IntVar(&intFlag, "int.flag", 1, "usage of intFlag")

    // after all flag definitions you must call
    flag.Parse()

    // then we can access our values
    fmt.Printf("Value of stringFlag is: %s\n", *stringFlag)
    fmt.Printf("Value of intFlag is: %d\n", intFlag)

}

flag ayuda con un mensaje:

$ ./flags -h
Usage of ./flags:
  -int.flag int
        usage of intFlag (default 1)
  -string.flag string
        here comes usage (default "default value")

Llamar con todas las banderas:

$ ./flags -string.flag test -int.flag 24
Value of stringFlag is: test
Value of intFlag is: 24

Llamada con banderas que faltan:

$ ./flags
Value of stringFlag is: default value
Value of intFlag is: 1


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow