Interfaces y genéricos
19 pasos en 7 series de Go.
Structs y métodos, después interfaces, que Go satisface de forma implícita. No hay palabra clave implements: si los métodos coinciden, el tipo califica, y eso moldea cómo se diseñan las APIs de Go.
Luego tipos dinámicos y type switches, las interfaces estándar que vale la pena conocer, los genéricos tal como por fin llegaron en 1.18, y una serie sobre formas de API. Diecinueve pasos.
Structs y métodos
- Structs y métodosTipos compuestos, embebido y receptores.
- Struct con métodoUn struct con un método, y la elección entre receptor por valor o por puntero.
- Embebido de structsEmbeber promueve los campos y métodos del tipo interno hacia el externo.
Interfaces
- InterfacesSatisfacción implícita: no hay palabra clave
implements. - Las interfaces se satisfacen implícitamenteSin palabra clave implements: el tipo tiene los métodos, así que encaja.
- Interfaces embebidasUna interfaz mayor se arma con otras menores, que es como lo hace io.
- La trampa de la interfaz nilUna interfaz que contiene un puntero nil no es nil en sí misma.
Tipos dinámicos
- Switch de tiposUn switch sobre el tipo dinámico dentro de un valor de interfaz.
- Aserciones de tipoExtraer de vuelta un tipo concreto, con seguridad o con panic.
Interfaces estándar
- io.Reader e io.WriterLas dos interfaces que permiten conectar cosas sin relación entre sí.
- StringerUn método String cambia cómo fmt imprime tu tipo.
- sort.Interface y slices.SortFuncLa vieja vía de tres métodos, y la genérica que la reemplazó.
Genéricos
- GenéricosParámetros de tipo e interfaces de restricción.
- Parámetros de tipo y restriccionesUna restricción dice qué debe soportar el tipo, y any es la más laxa.
- Tipos genéricosUn struct puede tomar un parámetro de tipo, y sus métodos lo reutilizan.
- map, filter y reduce genéricosLo que la biblioteca estándar te deja a ti, en diez líneas.
Formas de API
- Opciones funcionalesLa respuesta de Go a los argumentos opcionales: variádicas que mutan una config.
- range sobre funcionesGo 1.23 permite hacer range sobre una función: así funcionan los iteradores ahora.
Bis
- wordcount.goUn programa completo de frecuencias: leer stdin, contar, ordenar, imprimir.