En Go los errores son valores comunes que devuelves y revisas. Aprende a envolverlos con contexto, a encontrar la causa con errors.Is y errors.As, a juntar varios a la vez, y a guardar panic y recover para los bugs de verdad.
Una interfaz de Go es una lista de métodos, y cualquier tipo que tenga esos métodos la satisface sin decirlo. Aprende conjuntos de métodos, Stringer, io.Reader, type switches y por qué un error que guarda un puntero nil no es nil.
Los structs de Go son valores, así que cada asignación y cada llamada los copia. Los punteros te dejan compartir un solo struct, y los receptores puntero son la forma en que un método cambia el valor sobre el que se llama.
Un string de Go es una fila de bytes de solo lectura, casi siempre UTF-8. Cuando lo ves así, que len cuente bytes, que indexar dé un byte, que range dé runes y que un slice parta un carácter en dos, todo tiene sentido.
Un map de Go guarda valores bajo claves y los encuentra con un hash. Aprende por qué una clave que falta da el valor cero, por qué escribir en un map nil provoca un panic y por qué el orden de iteración cambia en cada ejecución.
Un slice de Go es una pequeña ventana sobre un array que guarda los valores reales. Cuando ves la ventana, len, cap, append y el bug de dos slices que se cambian entre sí dejan de ser un misterio.
Las funciones de Go pueden devolver varios valores, llevar variables consigo como closures y programar la limpieza con defer. Mira cómo funciona cada cosa, incluido el orden de las llamadas diferidas y cuándo se fijan sus argumentos.
Go se arregla con if, una sola palabra clave de bucle llamada for y un switch que no cae al siguiente caso. Aprende cada forma, el cambio de Go 1.22 que da a cada iteración su propia variable, y el break con etiqueta.
Toda variable de Go empieza con un valor cero, los números nunca se convierten solos y las constantes son más flexibles que las variables. Aprende var, :=, enteros con tamaño, overflow, iota y los verbos de Printf para ver valores.
Un primer programa en Go necesita una herramienta de línea de comandos, un archivo go.mod y un paquete main. Qué hacen go run, go build, gofmt y go vet, y por qué Go no compila código con un import sin usar.