Por Yodra López Herrera y Cristian Suárez Vera
Nuestros compañeros Yodra y Cristian, se están iniciando en el lenguaje Go. Como resultado de su aprendizaje en proceso, nos ofrecieron esta charla introductoria. Este artículo resume algunos de los puntos de la ponencia.
El espacio de trabajo DEBE estar dentro del directorio en el que instalaste Go. Carpeta SRC dentro del GoPath.
Aunque hay muchas maneras de hacerlo, nos hemos centrado en dos. Es recomendable que uses siempre la misma forma de declarar variables. Curiosidad: Los array existen, pero son muy peculiares, teniendo el tamaño fijado. No obstante, hay una especie de array dinámicos llamados slice, cuyo tamaño puede cambiar.
Los métodos que queremos que sean públicos empezarán en MAYÚSCULA. Si queremos que sean privados (dentro del paquete en el que estés), empezarán en minúscula.
func nombre(parámetros de entrada) (tipos de la salida) {cuerpo}
Si no se define el tipo de un parámetro, se utiliza el tipo del último definido. En nuestro ejemplo, solo tipamos la “y”, por lo que ese tipo queda extendido a las variables anteriores a ella. Se pueden devolver cualquier número de resultados.
Hay varias maneras de hacer los import en Go, no obstante, esta es la que más suele verse. Todo lo que se quiere importar va dentro de los paréntesis. Truco: Cuando tengas que importar paquetes que no usas, pondrás _ (como alias)
Funcionan prácticamente igual que en otros lenguajes. Con el uso de punteros, los valores de las variables cambian. En nuestro ejemplo, el valor de i pasa a ser 21 en vez de 42.
No existen las clases, no hay herencias, pero existen las interfaces. Se trabaja con structs que vienen a ser nuestras “clases”. Cuando necesitamos que ciertos métodos se relacionen con nuestra “clase”, tenemos que definir dicha relación antes del nombre del método. Fíjate cómo haríamos para obtener el full name de la “clase” persona. En resumen, Type+func vendrían a ser algo así como nuestra “clase”.
Creamos nuestro tipo con un string dentro. Para implementar la interfaz, implementaremos los métodos de esa interfaz. En ningún momento se dice explícitamente que “este tipo implementa esta interfaz”. Esto supone algún que otro problema que explicamos a partir del minuto 14:07.
No tenemos excepciones. Como ya dijimos, casi todos los métodos suelen devolver dos cosas, lo que queremos que devuelva y un error. Es muy habitual encontrarnos con la siguiente estructura: Hacemos una llamada a un método y comprobamos: si hay error, lo soluciono VS si no hay error, el programa continúa ejecutándose. Normalmente, los errores implementan la interfaz de error con el método error. El seguimiento que hagamos dependerá del comportamiento que precisemos (subirlos de nivel, imprimirlos, etc.). Existen errores que controlamos (interfaz error) y luego están los panic, en los que el programa se rompe ¿Cómo nos recuperamos en estos casos? Existe la palabra reservada “defer” (similar a los finally de las excepciones en java). Es una función que se ejecuta siempre al final del método en cuestión o, si salta un panic, se ejecuta antes de terminar la ejecución del método. Te lo explicamos con un ejemplo a partir del minuto 18:40
Un apartado que nos genera inquietud ha sido el nombre, o mejor dicho la letra, que se asigna a las variables ¿Es demasiado corto? Desde luego, supone un sobreesfuerzo tener presente todo el tiempo que, por ejemplo, “e” alude a “error” o “p” a “persona”, si así lo hemos decidido.
Tú decides el “happy path”, el camino en el que todo va bien y te limitas a ir haciendo comprobaciones para ver que nada falla con los distintos casos. Lo explicamos con un ejemplo a partir del min 25:05, en él creamos una película probando un end-point de película.
Nos facilita la gestión de los errores en los test. Llegamos a la conclusión de que se parece mucho a JavaScript, sobre todo la parte en la que se crea el test. En general, parece que Go es una mezcla de lenguajes… tienes cosas de JS, de Python, de C, etc.
Quedan muchos aspectos en los que profundizar y lo haremos en un segundo vídeo 😊
¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.
Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?
Pero espera 🖐 que tenemos un conflicto interno. A nosotros las newsletter nos parecen 💩👎👹 Por eso hemos creado la LEAN LISTA, la primera lista zen, disfrutona y que suena a rock y reggaeton del sector de la programación. Todos hemos recibido newsletters por encima de nuestras posibilidades 😅 por eso este es el compromiso de la Lean Lista