Biblioteca estándar de Go (Golang): una visión completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biblioteca estándar de Go (Golang): una visión completa



El lenguaje Go (Golang), desarrollado en Google, es famoso por su concisión, alto rendimiento y soporte integrado para la concurrencia. Sin embargo, uno de sus principales "superpoderes" es su potente y bien diseñada biblioteca estándar. A diferencia de muchos otros lenguajes, donde es necesario agregar dependencias de terceros para resolver tareas básicas, Go proporciona todo lo necesario "listo para usar". En este artículo, realizaremos una visión completa de los paquetes clave de la biblioteca estándar de Go que serán útiles para todo desarrollador.



1. Entrada/Salida y trabajo con archivos: paquetes io, os, bufio



El paquete io es la base para todas las operaciones de entrada/salida. Sus interfaces io.Reader y io.Writer son una de las abstracciones más importantes en Go. De hecho, cualquier fuente de datos (archivo, conexión de red, cadena) puede representarse como un Reader, y cualquier destino como un Writer.



El paquete os proporciona funciones para interactuar con el sistema operativo: abrir/crear archivos, leer directorios, trabajar con variables de entorno.



El paquete bufio agrega almacenamiento en búfer, lo que acelera significativamente la lectura y escritura de grandes volúmenes de datos.



package main

import ( "bufio" "fmt" "os")

func main() { // Abrimos el archivo para lectura file, err := os.Open("example.txt") if err != nil { panic(err) } defer file.Close()

// Creamos un escáner con búfer scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) }

if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "Error de lectura:", err) }}


2. Trabajo con texto y formato: paquetes strings, fmt, strconv



El paquete strings contiene cientos de funciones útiles para trabajar con cadenas: búsqueda, reemplazo, división, unión, eliminación de espacios en blanco y mucho más. El paquete strconv se encarga de convertir cadenas a números (y viceversa), así como de analizar valores booleanos.



El paquete fmt es una "navaja suiza" para la salida formateada. Implementa las funciones Printf, Sprintf y Fprintf, que funcionan con cualquier tipo que implemente la interfaz Stringer.



package main

import ( "fmt" "strconv" "strings")

func main() { // División de una cadena parts := strings.Split("a,b,c", ",") fmt.Println(parts) // [a b c]

// Conversión de cadena a número num, _ := strconv.Atoi("42") fmt.Printf("Número: %d", num) // Número: 42

// Formateo con ancho de campo fmt.Printf("|%10s|%5d|", "Hola", 123)}


3. Redes y HTTP: paquetes net, net/http



El paquete net proporciona primitivas de bajo nivel para trabajar con TCP/UDP, DNS y direcciones IP. Pero la verdadera "estrella" es el paquete net/http. Permite crear servidores y clientes HTTP completos sin una sola dependencia de terceros.



Gracias al http.ServerMux integrado y al enfoque de middleware, puede enrutar fácilmente solicitudes, manejar JSON, gestionar cookies y sesiones. La biblioteca estándar de Go se utiliza en producción por gigantes como Docker, Kubernetes y Dropbox.



package main

import ( "encoding/json" "fmt" "net/http")

type Response struct { Message string `json:"message"`}

func helloHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Método no soportado", http.StatusMethodNotAllowed) return }

resp := Response{Message: "¡Hola, mundo!"} w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(resp)}

func main() { http.HandleFunc("/api/hello", hello

Recommendations