Go Programming Language Tutorial

He escrito una serie de entradas que intentan servir de guía e introducción para aprender el lenguaje de programación Go. Este tutorial requiere que conozcas al menos las bases de la programación, por lo que probablemente sea una buena idea leerlo sólo si estás aprendiendo Go como tu segundo o tercer lenguaje de programación. Este contenido va desde la sintaxis básica de Go hasta usos avanzados como la captura de señales o la contenedorización.

Introducción al lenguaje Go y Sintaxis Básica

Introducción al lenguaje de programación Go, tipos de datos nativos, variables, la polémica en torno a este lenguaje, lo bueno, lo malo, lo feo e incluso un vistazo a su popular, y a veces odiada, mascota.

Go lenguaje de programación introducción a variables y tipos de datos

Cómo crear funciones go y pasarles argumentos, junto con la base del paquete fmt utilizado para imprimir texto por pantalla

Go: funciones, argumentos y el paquete fmt

Domina los diferentes tipos de bucles que existen en go, aprende a utilizar el control de flujo para ejecutar tu código condicionalmente y conoce las cláusulas break, continue y defer.

Go: ciclos for, break, continue, defer, if y else

Crear array y slices y conocer sus diferencias y cómo iterar sobre ellos correctamente usando range.

Go: slices y arrays

Aprende cómo funcionan internamente los map o diccionarios, las diferentes formas de crearlos y cómo iterar sobre ellos usando range.

Go: maps o diccionarios

Lee sobre las principales diferencias que existen entre string, runas y bytes en go, cómo funcionan internamente y sus principales métodos relacionados.

Go: strings, runes y bytes

Tutorial de Lenguaje de Programación Go: Programación orientada a objetos

Go no tiene clases, pero puedes emular características de POO (polimorfismo, herencia y encapsulación) usando go structs.

Go: Structs, herencia, polimorfismo y encapsulación

Cómo manejar e importar y referenciar paquetes y módulos en go.

Go: importación de paquetes y manejo de modulos

Tutorial de Lenguaje de Programación Go: Concurrencia y Corrutinas

La característica que hace destacar a go: concurrencia y goroutines, aprende a crearlas y manejarlas.

Go: introducción a las goroutines y concurrencia

Aquí te explico cómo comunicar goroutines a través de canales y los principios fundamentales a tener en cuenta cuando se trabaja con código concurrente.

Go: uso de channels o canales para comunicar goroutinas

Entender el concepto de deadlocks en el contexto del trabajo con goroutines, cómo evitarlos y qué causa este problema.

Go: channels, entendiendo los deadlocks o puntos muertos

Los fundamentos de las condiciones de carrera cuando se trabaja con código concurrente y cómo prevenirlas. Crear código resistente a condiciones de carrera usando mutexes en Go

Go: condiciones de carrera en goroutines y mutex

Tutorial de Lenguaje de Programación Go: Pruebas y Registro

La base de las capacidades de prueba y cobertura de go.

Go: testing básico y coverage

Cómo perfilar y examinar el rendimiento del código usando go.

Go: profiling o perfilado básico del uso del CPU

Cómo usar la librería de logging por defecto en el lenguaje de programación go.

Logging con la librería estándar en Go

Aplicaciones Go

Cómo capturar señales y procesarlas en go para finalizar la ejecución de tu código de forma elegante y segura.

Go: Manejo de Signals para Cerrar Aplicaciones

Aprende a manejar migraciones SQL usando la librería migrate de go

Tutorial de migraciones en Go con migrate

La base de la librería reflection de go y cómo crear código flexible que trate con tipos desconocidos

Go con Reflect: Mayor Flexibilidad En Tu Código

¿Sabías que Docker está escrito en Go? ¿Te has preguntado alguna vez cómo funciona internamente un contenedor Docker? Pues aquí te explico todos los conceptos que necesitas saber para crear tu propia tecnología de contenedorización.

¿Cómo Funciona un Container de Docker Internamente?

Explico el patrón de diseño worker pool en go y cómo aprovechar la concurrencia de Go y este patrón de diseño para limitar la cantidad de recursos que utiliza tu aplicación.

Explicación del Patron De Diseño Worker Pool