DMarlon Studio

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
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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