Biblioteca estándar y estructura del proyecto
26 pasos en 8 series de Go.
La biblioteca estándar de Go es inusualmente completa, y este tour es un recorrido práctico por ella. Codificación, tiempo, archivos e IO, colecciones y texto, estructura de programas y logging, HTTP, y al final paquetes y el sistema de compilación.
Veintiséis pasos. El servidor net/http que hay aquí es de calidad de producción, algo que la mayoría de los lenguajes no puede decir de su biblioteca estándar.
Codificación
- Codificación JSONLas etiquetas de struct asignan campos de Go a claves JSON.
- JSON de ida y vueltaMarshal y Unmarshal, con etiquetas que deciden los nombres en el cable.
- JSON en streamingDecoder y Encoder operan sobre un reader y un writer, un valor a la vez.
Tiempo
- Formatear tiempoEl layout de Go es una hora de ejemplo, no códigos con porcentaje.
- DuracionesUna Duration es un conteo de nanosegundos con las unidades en el literal.
Archivos e IO
- Leer líneasbufio.Scanner recorre un reader línea por línea, y su error hay que revisarlo.
- ArchivosLeer un archivo entero, escribir uno, o abrirlo y diferir el cierre.
- Rutas y recorridosfilepath une con el separador correcto y recorre un árbol.
Colecciones y texto
- El paquete slicesHelpers genéricos que antes se escribían a mano en cada proyecto.
- El paquete mapsIterar las claves y valores de un mapa sin escribir el bucle.
- OrdenamientoOrdenar slices con una función less propia.
- strconvDe texto a número y de vuelta, con el error que debes manejar.
- Expresiones regularesCompila una vez y reutiliza; los grupos con nombre hacen legible la coincidencia.
Programas y logging
- Flags de línea de comandosEl paquete flag declara, parsea y documenta la interfaz.
- Logging estructuradolog/slog escribe pares clave-valor, con un nivel, en texto o JSON.
HTTP
- Enrutar con el mux estándarGo 1.22 le enseñó a ServeMux métodos y variables de ruta.
- Un handler HTTPServir JSON con net/http y ServeMux.
- MiddlewareUn middleware toma un handler y devuelve otro que lo envuelve.
- Un cliente HTTPObtener y decodificar JSON con un timeout.
- Un cliente HTTP que se rindeUn cliente compartido con timeout, y una petición que carga un contexto.
Paquetes y compilación
- Documentación del paqueteUn comentario justo encima de la cláusula package documenta el paquete.
- Etiquetas de structUna etiqueta es metadatos en un campo, leídos por reflexión en ejecución.
- Restricciones de buildUna línea //go:build decide si el archivo siquiera se compila.
- Embeber archivosgo:embed mete archivos dentro del binario en tiempo de compilación.
- go:generateUn comentario que registra el comando que regenera un archivo.
Bis
- serve_json.goUna API JSON con el mux estándar: rutas, middleware, apagado ordenado.