Day12
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.
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.
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.