Leer argumentos de línea de comandos con Go y flag
En este post te mostraré a leer banderas, flags o argumentos de la línea de comandos usando el lenguaje de programación Go también conocido como Golang.
Cuando usamos programas podemos pasarles ciertas opciones, banderas o argumentos para su funcionamiento. Por ejemplo:
enviar_correo --destinatario=ejemplo@ejemplo.com --asunto=Hola
Te enseñaré a hacer eso pero con Go usando flag
.
Para leer opciones que se pueden pasar al programa podemos usar a flag. En este caso voy a usar flag.String
que leerá un argumento como cadena, aunque también existe flag.Bool
, flag.Int
, etcétera.
Esta función devolverá un apuntador a cadena y después podemos hacer la conversión. Los argumentos al llamarla son, en orden: nombre de la bandera, valor por defecto y descripción.
Aquí un ejemplo simple que lee el puerto en donde el servidor escuchará:
package main
import (
"flag"
"fmt"
)
const PuertoPorDefecto = ":8000"
func main() {
puerto := flag.String("puerto", PuertoPorDefecto, "Puerto de escucha del servidor")
flag.Parse()
// Convertir el apuntador a string
puertoCadena := *puerto
// Imprimirlo
fmt.Println("El puerto es ")
fmt.Println(puertoCadena)
// Esperar que el usuario presione Enter
fmt.Scanln()
}
Nota: una vez que hayas definido tus banderas, invoca a flag.Parse
.
Así que el modo de invocar a este programa una vez compilado sería (suponiendo que es leer.exe
):
leer.exe --puerto=:8181
Aquí tienes algunas pruebas:
Si te fijas, debemos indicar el valor por defecto en caso de que el usuario no lo proporcione. Además, la descripción sirve para cuando el usuario indica una opción errónea (digamos que es la ayuda):
Así es como terminamos este post. También existe otra manera en donde simplemente leemos los argumentos como un arreglo, pero eso lo dejo para otro artículo, ya que me parece que esta opción es más elegante.
Si Go te gusta puedes aprender más por aquí.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.
Ver comentarios
Podrias hacer un ejemplo igual con php como recoger lo que devuelva el programa por linea de comandos en variables de php?
Lo tendré en cuenta.
Saludos!