Biblioteca Estándar de Go: una base potente para cualquier aplicación
La biblioteca estándar de Go (Golang) no es solo un conjunto de utilidades. Es un ecosistema cuidadosamente diseñado que cubre el 80% de las necesidades del desarrollador al crear aplicaciones de servidor, red y consola. A diferencia de muchos lenguajes, donde la biblioteca estándar es solo un mínimo básico, en Go incluye un servidor HTTP completo, un cliente para trabajar con JSON, potentes herramientas para concurrencia e incluso un perfilador. A continuación, un desglose detallado de los paquetes clave.
1. Paquete fmt y io: base de entrada/salida
El paquete fmt es lo primero que encuentra un principiante. Proporciona las funciones Printf, Sprintf y Scanf para entrada y salida formateada. Pero el verdadero poder se esconde en el paquete io y sus interfaces Reader y Writer.
package main
import ( "fmt" "io" "strings")
func main() { // io.Reader — cualquier fuente de datos reader := strings.NewReader("¡Hola, Go!") data, _ := io.ReadAll(reader) fmt.Println(string(data)) // Salida: ¡Hola, Go!}2. Paquete net/http: creando un servidor web en 5 líneas
Go es famoso por su soporte HTTP integrado. El paquete net/http permite ejecutar un servidor web completo sin dependencias externas. Es la herramienta ideal para microservicios y APIs.
package main
import ( "fmt" "net/http")
func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "¡Hola, %s!", r.URL.Path[1:])}
func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) // Servidor en el puerto 8080}3. Paquete encoding/json: trabajando con JSON sin dolor
La serialización y deserialización de datos es una tarea común. El paquete encoding/json utiliza etiquetas de estructuras para un mapeo flexible de campos. Es más rápido que muchas bibliotecas de terceros, ya que funciona a nivel de reflexión, optimizada para Go.
package main
import ( "encoding/json" "fmt")
type User struct { Name string `json:"name"` Age int `json:"age"`}
func main() { jsonStr := `{"name":"Alice","age":30}` var user User json.Unmarshal([]byte(jsonStr), &user) fmt.Printf("%+v", user) // Salida: {Name:Alice Age:30}}4. Paquete sync: herramientas para concurrencia
Go fue creado para aplicaciones multihilo. El paquete sync proporciona Mutex, RWMutex, WaitGroup y Once. Pero la joya principal es sync.Map, un mapa thread-safe optimizado para escenarios de lectura frecuente.
package main
import ( "fmt" "sync")
func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(n int) { defer wg.Done() fmt.Println("Gorutina:", n) }(i) } wg.Wait() // Esperamos a que todas las gorutinas terminen}5. Paquete strings y strconv: trabajo con texto
El paquete strings contiene funciones para buscar, reemplazar, dividir y unir cadenas. strconv se encarga de convertir cadenas a números y viceversa, así como del escape de caracteres. Estos paquetes están escritos en ensamblador y funcionan con el máximo rendimiento.
package main
import ( "fmt" "strings" "strconv")
func main() { // strings phrase := "hello world" fmt.Println(strings.ToUpper(phrase)) // HELLO WORLD
// strconv num, _ := strconv.Atoi("42") fmt.Println(num + 8) // 50}6. Paquete testing: pruebas integradas
Go incluye un potente framework para pruebas
También en la biblioteca
Caché en Go (Golang): Redis, caché grupal y en memoria
Validación de datos en Swift con Validated
CoreLocation para Swift: guía completa con ejemplos
Event Bus y el patrón Observer en Java: implementación de una arquitectura débilmente acoplada