Biblioteca estándar de Go (Golang): guía 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: 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

Recommendations