Curso de Go avanzado
Para quien ya domina lo básico: las técnicas que se usan en proyectos reales. 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.
Empezar- 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