Programas de la línea de comandos, Uso de parámetros

¿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