¿Cómo capturar valores en la línea de comandos con Go?
En ocasiones existen datos que a través del programa terminan siendo distintos a lo que se esperaba, ya sea porque se capturaron de forma incorrecta o porque se realizó alguna operación sobre ellos.
Para capturar valores datos desde la línea de comando podemos utilizar la librería bufio
. Para ello creamos un nuevo reader.
reader := bufio.NewReader(os.Stdin)
Y podemos ir capturando los valores en variables.
variable, _ := reader.ReadString('\n')
Para utilizar ReadString es importante hacer notar que se debe especificar el limitador en forma de byte, en este caso una nueva linea, y por ende se usan las comillas simples. Esta instrucción también pone en pausa el programa hasta que se ingresa el valor.
El ejemplo completo luciría así…
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Printf("Ingresa tu nombre: ")
nombre, _ := reader.ReadString('\n')
nombre = strings.Replace(nombre, "\n", "", -1)
fmt.Printf("Ingresa tu edad: ")
edad, _ := reader.ReadString('\n')
edad = strings.Replace(edad, "\n", "", -1)
fmt.Println("-------------")
fmt.Println("Nombre:", nombre)
fmt.Println("Edad:", edad)
fmt.Println("-------------")
}
El resultado luce algo así.
Ingresa tu nombre: Javier
Ingresa tu edad: 33
-------------
Nombre: Javier
Edad: 33
-------------