Curso de Go
Sencillo y concurrente: servidores web, herramientas de línea de órdenes y servicios en la nube.
En DMarlon Studio, Go es el servidor del destino Web (Go): usted diseña las pantallas y el estudio genera el servidor en Go que las sirve.
Curso de Go básico
20 leccionesDesde cero: lo imprescindible para escribir sus primeros programas.
- 1Hola, mundoEscriba su primer programa en Go: package main, la función main y fmt.Println para mostrar textos y números en la consola.Lección 1
- 2Variables y tiposGuarde datos en variables de Go con var y :=, conozca los tipos básicos (int, float64, string y bool) y el valor cero de cada uno.Lección 2
- 3Constantes y aritméticaUse constantes e iota en Go, opere con + - * / y %, y convierta entre int y float64 para no perder los decimales.Lección 3
- 4Textos y PrintfJunte textos con + y dé formato a la salida en Go con fmt.Printf y fmt.Sprintf: los verbos %s, %d, %.2f, %v y %q, y los anchos de columna.Lección 4
- 5Leer del tecladoLea líneas del teclado en Go con bufio.Scanner y conviértalas en números con strconv.Atoi y strconv.ParseFloat para hacer cuentas.Lección 5
- 6Condiciones con if y elseTome decisiones en Go con if, else if y else, combine condiciones con &&, || y !, y aproveche la instrucción inicial del if.Lección 6
- 7Elegir con switchElija entre varios casos con switch en Go: varios valores por caso, default, switch sin expresión, instrucción inicial y fallthrough.Lección 7
- 8Bucles con forRepita instrucciones en Go con for, el único bucle del lenguaje: la forma clásica, como while, sin condición, break y continue.Lección 8
- 9ArraysGuarde varios valores del mismo tipo en un array de Go: tamaño fijo, índices, len, recorrido con for, copia al asignar y comparación con ==.Lección 9
- 10SlicesTrabaje con slices en Go, las listas que crecen: append, len, cap, make y cortes s[a:b] que comparten memoria con el original.Lección 10
- 11MapasGuarde pares clave-valor en un mapa de Go: añadir, leer con ok, delete y len, y escribirlo siempre en el mismo orden con sort.Strings.Lección 11
- 12Funciones y varios resultadosEscriba funciones en Go con parámetros y tipo de resultado, devuelva varios valores a la vez y use resultados con nombre.Lección 12
- 13Errores como valoresTrate los errores en Go como valores: créelos con errors.New y fmt.Errorf, compruébelos con if err != nil y reconózcalos con errors.Is.Lección 13
- 14EstructurasAgrupe datos relacionados en un struct de Go: campos, literales por nombre o por orden, %+v, copias y slices de estructuras.Lección 14
- 15MétodosAñada métodos a sus tipos en Go: receptores por valor y por puntero, y el método String() que decide cómo se escribe un valor.Lección 15
- 16PunterosEntienda los punteros en Go: & para obtener una dirección, * para llegar al valor, funciones que cambian el original y el valor nil.Lección 16
- 17Los paquetes strings y strconvTrabaje con texto en Go con el paquete strings (Split, TrimSpace, Join, Contains, Replace) y convierta textos y números con strconv.Lección 17
- 18Recorrer con rangeRecorra slices, mapas y textos en Go con for y range: índice y valor, claves ordenadas con sort.Strings y runas para los caracteres.Lección 18
- 19Escribir y leer archivosEscriba y lea archivos de texto en Go con el paquete os: WriteFile, OpenFile para añadir, Open con bufio.Scanner y defer para cerrar.Lección 19
- 20Proyecto: inventario de una tiendaProyecto final del curso básico de Go: el inventario de una tienda con structs, métodos, errores, slices, bucles y Printf.Lección 20
Curso de Go avanzado
20 leccionesPara quien ya domina lo básico: las técnicas que se usan en proyectos reales.
- 1Interfaces e implementación implícitaDefina interfaces en Go y vea cómo un tipo las cumple solo con tener sus métodos, sin implements: transportistas y costes de envío.Lección 1
- 2Interfaz vacía y switch de tiposGuarde valores de cualquier tipo con any (interface{}) en Go y recupere el tipo concreto con aserciones de tipo y switch de tipos.Lección 2
- 3Incrustación y composiciónComponga tipos en Go incrustando structs: campos y métodos promovidos, cómo sustituir un método y por qué no es herencia. Clientes y direcciones.Lección 3
- 4Stringer y formato de sus tiposDecida cómo se escriben sus tipos en Go con el método String (fmt.Stringer) y vea qué hacen %v, %+v, %#v, %d y los anchos con ellos.Lección 4
- 5Errores propios, Is, As y %wCree errores centinela y tipos de error propios en Go, envuélvalos con %w y reconózcalos después con errors.Is y errors.As.Lección 5
- 6defer, panic y recoverAplace llamadas con defer, vea en qué orden se ejecutan y convierta un panic en un error normal con recover, en Go.Lección 6
- 7Closures y funciones como valoresUse funciones como valores en Go: tipos de función, funciones que devuelven closures y closures con estado propio. Reglas de precio y facturas.Lección 7
- 8Genéricos: parámetros de tipo y restriccionesEscriba funciones genéricas en Go con parámetros de tipo y restricciones: un Sum para varios tipos numéricos y un Map para cualquier tipo.Lección 8
- 9Una pila genéricaCree un tipo genérico Stack[T] en Go con Push, Pop y Len, y úselo con textos y con enteros: el historial de deshacer de un editor.Lección 9
- 10sort.Slice y sort.InterfaceOrdene structs en Go con sort.Slice, sort.SliceStable y sort.Interface, invierta el orden con sort.Reverse y busque con sort.Search.Lección 10
- 11Goroutines y WaitGroupEjecute trabajo en paralelo con goroutines en Go, espere a que terminen con sync.WaitGroup y obtenga siempre la misma salida.Lección 11
- 12CanalesComunique goroutines en Go con canales: enviar y recibir, cerrar un canal, recorrerlo con range y montar una tubería de dos etapas.Lección 12
- 13Canales con búfer y selectUse canales con búfer como colas en Go, envíe sin bloquear con select y default, y ponga un tiempo límite con select y time.After.Lección 13
- 14Grupos de trabajadoresReparta trabajo entre un número fijo de goroutines en Go con un canal de tareas y otro de resultados, y ordene los resultados antes de escribirlos.Lección 14
- 15Mutex y estado compartidoProteja datos compartidos por varias goroutines en Go con sync.Mutex: 55 compradores, 40 entradas y ninguna vendida dos veces.Lección 15
- 16context: tiempo límite y cancelaciónPonga un tiempo límite a una operación y cancélela con context en Go: WithTimeout, WithCancel, ctx.Done() y ctx.Err() con un proveedor lento.Lección 16
- 17encoding/json y etiquetas de structConvierta structs a JSON y de vuelta en Go con json.Marshal y json.Unmarshal, y controle los nombres con etiquetas como omitempty y -.Lección 17
- 18Comprobaciones con tablasCompruebe una función en Go con una tabla de casos, como en los tests de go test: cada caso con nombre, entrada y resultado esperado.Lección 18
- 19Manejadores HTTP y httptestEscriba un manejador HTTP en Go con net/http que responde en JSON y pruébelo con httptest, sin red ni servidor. Así trabaja el destino Web (Go).Lección 19
- 20Proyecto: procesar pedidosUn proyecto que une lo aprendido en Go: pedidos en JSON, una función genérica que trabaja en paralelo con goroutines y un tipo con String.Lección 20