¿Cómo utilizar parámetros en programas de línea de comandos de Go?
Si bien es posible utilizar el paquete os
para procesar argumentos enviados a la línea de comandos, Golang provee una forma mas sencilla de manejar dichos argumentos utilizando el paquete flag
.
¿Cuáles son las ventajas del uso del paquete flag?
- Especificar el tipo de valores enviados como argumentos.
- Especificar un valor por default para los argumentos.
- Generar documentación de ayuda.
Ejemplo del uso del paquete flag
package main
import (
"flag"
"fmt"
)
func main() {
nombre := flag.String("nombre", "", "El nombre de la persona")
edad := flag.Int("edad", 18, "La edad de la persona")
flag.Parse()
fmt.Println("Tu nombre es:", *nombre)
fmt.Println("Tu edad es:", *edad)
}
Descripción del ejemplo de uso de argumentos mediante el paquete flag
-
Capturamos la variable nombre mediante
flag.String("nombre", "", "El nombre de la persona")
, el tipo es String, el valor por default del nombre es un string en blanco, y la documentación “El nombre de la persona”. -
Capturamos la variable edad mediante
flag.Int("edad", 18, "La edad de la persona")
, el tipo es Int (entero), el valor por default es 18, y la documentación “La edad de la persona”.
Para ejecutar el programa.
$ go run main.go -nombre "John Doe" -edad 22
En la salida obtenemos.
Tu nombre es: John Doe
Tu edad es: 22
Si deseamos ver la documentación generada para el programa.
$ go run main.go -h
La salida obtenido.
-edad int
La edad de la persona (default 18)
-nombre string
El nombre de la persona
exit status 2
Si se especifica un tipo de argumento de un tipo distinto al declarado, se generará un error.
$ go run main.go -nombre "John Doe" -edad "Mexicano"
invalid value "Mexicano" for flag -edad: parse error