Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
4.3 KiB
Obtención del input del usuario con Punteros y un programa terminado
Ayer, en el (Día 11), creamos nuestro primer programa Go self-contained, creando el código para obtener el input del usuario como variables dentro de nuestro código y se les dio valores. Ahora pediremos al usuario su input para dar el valor a la variable del mensaje final.
¡Qué emocionante!
Obteniendo el input del usuario
Antes de hacer esto vamos a echar un vistazo a nuestra aplicación para recorrer las variables que queremos como prueba antes de obtener la entrada del usuario.
Ayer terminamos con nuestro código con el aspecto de este fichero: day11_example4.go.
Hemos definido manualmente nuestras variables y constantes challenge, daystotal, dayscomplete
.
Ahora vamos a añadir una nueva variable llamada TwitterName
. Puedes ver como queda en el código en el fichero day12_example1.go y si ejecutamos este código esta es nuestra salida.
Estamos en el día 12 y tendríamos que cambiar ese dayscomplete
cada día y compilar nuestro código cada día si esto fuera hardcodeado, lo cual no suena muy atractivo.
Con lo cual, queremos que el usuario escriba los valores de su nombre en Twitter y del número de días completados para obtenerlos en nuestro programa. Para ello podemos utilizar otra función input del paquete fmt
.
Recapitulando sobre el paquete fmt
, diferentes funciones para la entrada y salida formateada (I/O)
- Imprimir mensajes
- Recoger el input del usuario
- Escribir en un archivo
En lugar de asignar en el programa el valor de una variable, queremos pedírsela al usuario en un input.
fmt.Scan(&TwitterName)
Fíjate que también usamos &
antes de la variable. Esto se conoce como puntero y lo veremos en la siguiente sección.
En el código del fichero day12_example2.go puedes ver que estamos pidiendo al usuario que introduzca la información mencionada en las variables TwitterName
y DaysCompleted
.
Ahora vamos a ejecutar nuestro programa y verás que tenemos la entrada de ambas variables.
Vale, está muy bien, hemos conseguido un input del usuario y hemos imprimido un mensaje con los valores obtenidos. pero ¿qué pasa si conseguimos que nuestro programa nos diga cuántos días nos quedan en nuestro reto?
Para ello, vamos a crear una variable llamada remainingDays
y le daremos el valor integer "90". A continuación, tenemos que cambiar este valor para imprimir los días restantes cuando recibamos la entrada del usuario de "días completados", es decir, hacer una resta.
remainingDays = remainingDays - DaysCompleted
Puedes ver el aspecto de nuestro programa terminado en el fichero day12_example2.go.
Si ahora ejecutamos este programa puedes ver que se hace un simple cálculo basado en la entrada del usuario y el valor de la variable remainingDays
.
¿Qué es un puntero? (Variables especiales)
Un puntero es una variable (especial) que apunta a la dirección de memoria de otra variable.
Puedes ver una explicación más detallada en geeksforgeeks.
Ahora, simplifiquemos nuestro código y mostremos con y sin el &
delante de uno de nuestros comandos de impresión, esto nos da la dirección de memoria del puntero. El ejemplo del código lo puedes encontrar en el fichero day12_example4.go.
A continuación ejecuta este código y observa.
Recursos
- StackOverflow 2021 Developer Survey
- Why we are choosing Golang to learn
- Jake Wright - Learn Go in 12 minutes
- Techworld with Nana - Golang full course - 3 hours 24 mins
- NOT FREE Nigel Poulton Pluralsight - Go Fundamentals - 3 hours 26 mins
- FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners
- Hitesh Choudhary - Complete playlist
Nos vemos en el Día 13.