Go
Análisis de argumentos de línea de comando y banderas
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