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í.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
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!