Colección de Bibliotecas de Código Abierto de Go
Recopilamos y organizamos bibliotecas y frameworks de código abierto de Go para facilitar su navegación. También se aceptan PR para agregar nuevos proyectos.
TIP
El orden no representa ranking, la utilidad debe evaluarse según la experiencia real.
Frameworks Web
| Nombre | Descripción | Repositorio |
|---|---|---|
| gin | El framework web más clásico | https://github.com/gin-gonic/gin |
| beego | Framework web desarrollado por desarrolladores chinos | https://github.com/beego/beego |
| iris | Conocido como el framework web más rápido | https://github.com/kataras/iris |
| echo | Framework web minimalista de alto rendimiento | https://github.com/labstack/echo |
| goji | Framework web simple | https://github.com/zenazn/goji |
| revel | Framework web full-stack de alta disponibilidad | https://github.com/revel/revel |
| buffalo | Framework web para construir proyectos full-stack fácilmente | https://github.com/gobuffalo/buffalo |
| hertz | Framework HTTP de microservicios de alto rendimiento y escalabilidad (código abierto por ByteDance) | https://github.com/cloudwego/hertz |
| dotweb | Un framework web miniatura simple | https://github.com/devfeel/dotweb |
| fiber | Framework web estilo Express de Node.js | https://github.com/gofiber/fiber |
ORM
| Nombre | Descripción | Repositorio |
|---|---|---|
| gorm | Biblioteca ORM amigable para desarrolladores | https://github.com/go-gorm/gorm |
| xorm | ORM simple y potente | https://gitea.com/xorm/xorm |
| ent | ORM de código abierto por Facebook | https://github.com/ent/ent |
| sqlx | Extensión potente para la biblioteca sql | https://github.com/jmoiron/sqlx |
| beego/orm | ORM incluido en beego | https://github.com/astaxie/beego/tree/master/orm |
| rel | ORM moderno y extensible | https://github.com/go-rel/rel |
| bun | ORM con enfoque en SQL | https://github.com/uptrace/bun |
Frameworks de Microservicios
| Nombre | Descripción | Repositorio |
|---|---|---|
| kratos | Framework de microservicios cloud-native (código abierto por Bilibili) | https://github.com/go-kratos/kratos |
| go-kit | Biblioteca de herramientas para desarrollo de microservicios | https://github.com/go-kit/kit |
| kitex | Framework de microservicios de alto rendimiento y extensibilidad (código abierto por ByteDance) | https://github.com/cloudwego/kitex |
| go-zero | Framework de microservicios cloud-native (código abierto por Qiniu Cloud) | https://github.com/zeromicro/go-zero |
| go-micro | Un framework de microservicios extranjero | https://github.com/go-micro/go-micro |
| kite | Framework de microservicios (sin actualizaciones desde hace mucho) | https://github.com/koding/kite |
| dubbo-go | Implementación de Java Dubbo en Go (código abierto por Alibaba) | https://github.com/apache/dubbo-go |
| tarsgo | Implementación de Tars en Go (código abierto por Tencent) | https://github.com/TarsCloud/TarsGo |
| juptiers | Framework de microservicios orientado a la gobernanza (código abierto por Douyu) | https://github.com/douyu/jupiter |
| redsync | Bloqueo distribuido con Redis | https://github.com/go-redsync/redsync |
Easter Egg
El jupiter de Douyu lleva el nombre de Zeus, el rey de los dioses, mientras que el kratos de Bilibili lleva el nombre de Kratos, el dios de la guerra, quien más tarde mató a Zeus, el rey de los dioses.
Componentes de Registro
| Nombre | Descripción | Repositorio |
|---|---|---|
| logrus | Biblioteca de registro estructurado | https://github.com/sirupsen/logrus |
| zap | Biblioteca de registro de alto rendimiento de código abierto por Uber | https://github.com/uber-go/zap |
| glog | Registro de ejecución por niveles | https://github.com/golang/glog |
| zerolog | Registro JSON sin asignación de memoria | https://github.com/rs/zerolog |
| apex/log | Biblioteca de registro estructurado | https://github.com/apex/log |
| lumberjack | Biblioteca de rotación de registros, soporta rotación por tamaño, fecha y compresión de archivos | https://github.com/natefinch/lumberjack |
Componentes de Prueba
| Nombre | Descripción | Repositorio |
|---|---|---|
| testify | El paquete de herramientas de prueba más popular | https://github.com/stretchr/testify |
| ginkgo | Framework de pruebas moderno | https://github.com/onsi/ginkgo |
| ramsql | Motor SQL en memoria, principalmente para pruebas unitarias de SQL | https://github.com/proullon/ramsql |
| go-sqlmock | SQL Mock para pruebas | https://github.com/DATA-DOG/go-sqlmock |
| goconvey | Pruebas visualizadas en el navegador | https://github.com/smartystreets/goconvey |
| go-stress-testing | Herramienta de prueba de presión | https://github.com/link1st/go-stress-testing |
| xgo | Framework de pruebas de stub en Go, implementado mediante reescritura de código en tiempo de compilación | https://github.com/xhd2015/xgo |
| gomonkey | Framework de pruebas de stub en Go, implementado mediante modificación de direcciones de función | https://github.com/agiledragon/gomonkey |
Procesamiento de Datos
| Nombre | Descripción | Repositorio |
|---|---|---|
| mapstructure | Conversión bidireccional entre map y struct | https://github.com/mitchellh/mapstructure |
| cast | Conversión de tipos de datos conveniente | https://github.com/spf13/cast |
| deepcopy | Copia profunda | https://github.com/mohae/deepcopy |
| copier | Copia de valores entre campos con el mismo nombre en structs | https://github.com/jinzhu/copier |
| go-pinyin | Conversión de caracteres chinos a pinyin | https://github.com/mozillazg/go-pinyin |
| go-streams | Procesamiento de datos en flujo | https://github.com/reugn/go-streams |
| stream | Procesamiento en flujo | https://github.com/xyctruth/stream |
| go-humanize | Convierte datos a formatos legibles para humanos | https://github.com/dustin/go-humanize |
| uniseg | Segmentación de texto Unicode, ajuste de palabras y cálculo de ancho de cadena en Go | https://github.com/rivo/uniseg |
Validación de Datos
| Nombre | Descripción | Repositorio |
|---|---|---|
| go-playground/validator/v10 | Validador de datos | https://github.com/go-playground/validator |
| go-cmp | Biblioteca de comparación de valores de código abierto por Google | https://github.com/google/go-cmp |
| ozzo-validation | Biblioteca de validación de datos basada en reglas | https://github.com/go-ozzo/ozzo-validation |
| go-tagexpr | Biblioteca de validación de tags de struct | https://github.com/bytedance/go-tagexpr |
Estructuras de Datos
| Nombre | Descripción | Repositorio |
|---|---|---|
| gods | Implementación de estructuras de datos comunes | https://github.com/emirpasic/gods |
| go-datastructures | Implementación de estructuras de datos comunes | https://github.com/Workiva/go-datastructures |
| biset | Implementación de bitsets en Go | https://github.com/bits-and-blooms/bitset |
| bloom | Implementación de bloom filters en Go | https://github.com/bits-and-blooms/bloom |
| deque | Implementación de cola de doble extremo de alto rendimiento | https://github.com/edwingeng/deque |
| concurrent-map | Implementación de map segmentado seguro para concurrencia | https://github.com/orcaman/concurrent-map |
| samber/lo | Biblioteca de procesamiento de datos estilo Lodash, soporta genéricos | https://github.com/samber/lo |
| google/btree | Biblioteca BTree implementada por Google, soporta genéricos | https://github.com/google/btree |
| gostl | Biblioteca de estructuras de datos similar a C++ STL | https://github.com/liyue201/gostl |
Cálculo Matemático
| Nombre | Descripción | Repositorio |
|---|---|---|
| gonum | Similar a numpy | https://github.com/gonum/gonum |
| decimal | Biblioteca de operaciones de punto flotante de alta precisión | https://github.com/shopspring/decimal |
| crunch | Biblioteca que simplifica operaciones de bytes y bits | https://github.com/superwhiskers/crunch |
| math-engine | Biblioteca de motor de análisis y cálculo de expresiones matemáticas | https://github.com/dengsgo/math-engine |
Motor de Plantillas
| Nombre | Descripción | Repositorio |
|---|---|---|
| pongo2 | Motor de plantillas estilo Django | https://github.com/flosch/pongo2 |
| ace | Motor de plantillas HTML | https://github.com/yosssi/ace |
| mustache | Implementación de mustache en Go | https://github.com/hoisie/mustache |
| hero | Motor de plantillas potente y rápido | https://github.com/shiyanhui/hero |
| quictemplate | Motor de plantillas de alto rendimiento | https://github.com/valyala/quicktemplate |
| amber | Motor de plantillas originado de HAML y Jade | https://github.com/eknkc/amber |
Componentes de Caché
| Nombre | Descripción | Repositorio |
|---|---|---|
| golang-lru | LRU seguro para hilos, y caché LRU 2Q | https://github.com/hashicorp/golang-lru |
| ttlcache | Caché en memoria, soporta TTL, genéricos | https://github.com/jellydator/ttlcache |
| gocache | Gestor de middleware de caché | https://github.com/eko/gocache |
| go-cache | Caché en memoria, adecuado para aplicaciones de una sola máquina, soporta TTL | https://github.com/patrickmn/go-cache |
| ristretto | Caché en memoria de alto rendimiento | https://github.com/dgraph-io/ristretto |
| bigcache | Caché de keys grandes de alta eficiencia en memoria | https://github.com/allegro/bigcache |
Bases de Datos y Controladores
| Nombre | Descripción | Repositorio |
|---|---|---|
| modernc.org/sqlite | Controlador sqlite, escrito puramente en Go, no requiere cgo | https://gitlab.com/cznic/sqlite |
| mattn/go-sqlite3 | Controlador sqlite, requiere cgo | https://github.com/mattn/go-sqlite3 |
| denisenkom/go-mssqldb | Controlador sqlserver, sin muchas actualizaciones, se recomienda la versión de Microsoft | https://github.com/denisenkom/go-mssqldb |
| microsoft/go-mssqldb | Controlador sqlserver, nueva rama mantenida por Microsoft | https://github.com/microsoft/go-mssqldb |
| pgx | Controlador PostgreSQL | https://github.com/jackc/pgx/ |
| mysql | Controlador MySQL | https://github.com/go-sql-driver/mysql |
| oci-go-sdk | Controlador oficial de Oracle | https://github.com/oracle/oci-go-sdk |
| go-ora | Controlador de Oracle, escrito puramente en Go | https://github.com/sijms/go-ora |
| badger | Base de datos kv embebida, basada en LSM | https://github.com/dgraph-io/badger |
| boltdb | Base de datos kv embebida, basada en B+Tree | https://github.com/boltdb/bolt |
| goleveldb | Implementación de leveldb en Go | https://github.com/syndtr/goleveldb |
| qmgo | Biblioteca de operación de MongoDB de código abierto por Qiniu Cloud | https://github.com/qiniu/qmgo |
| mongo-go-driver | Controlador oficial de MongoDB | https://github.com/mongodb/mongo-go-driver |
| rqlite | Base de datos relacional distribuida ligera basada en sqlite | https://github.com/rqlite/rqlite/ |
| go-mysql | Un conjunto de herramientas potente para MySQL | https://github.com/go-mysql-org/go-mysql |
| go-mysql-elasticsearch | Herramienta para sincronizar datos de MySQL a Elasticsearch | https://github.com/go-mysql-org/go-mysql-elasticsearch |
| gofound | Motor de búsqueda de texto completo de nivel empresarial para una sola máquina | https://github.com/sea-team/gofound |
| bleve | Biblioteca de búsqueda de texto completo | https://github.com/blevesearch/bleve |
Serialización
| Nombre | Descripción | Repositorio |
|---|---|---|
| go-ini | Biblioteca de serialización de archivos ini | https://github.com/go-ini/ini |
| sonic | Biblioteca de serialización JSON de alto rendimiento de código abierto por ByteDance | https://github.com/bytedance/sonic |
| easyjson | Biblioteca de serialización JSON rápida | https://github.com/mailru/easyjson |
| gjson | Obtención rápida de valores JSON por clave, no es una biblioteca de serialización tradicional | https://github.com/tidwall/gjson |
| go-yaml | Biblioteca de serialización YAML | https://github.com/go-yaml/yaml |
| go-toml | Biblioteca de serialización TOML | https://github.com/pelletier/go-toml |
| properties | Biblioteca de serialización de properties | https://github.com/magiconair/properties |
| viper | Soporta serialización de múltiples formatos de datos, también es un gestor de configuración | https://github.com/spf13/viper |
| configor | Serializador de múltiples formatos de datos escrito por el autor de gorm, gestor de configuración | https://github.com/jinzhu/configor |
Línea de Comandos
| Nombre | Descripción | Repositorio |
|---|---|---|
| pflag | Paquete de flags estilo POSIX/GNU | https://github.com/spf13/pflag |
| go-flags | Analizador de parámetros de línea de comandos | https://github.com/jessevdk/go-flags |
| cobra | Andamio moderno para construir programas de línea de comandos | https://github.com/spf13/cobra |
| dimiro1/banner | Biblioteca para construir banners estéticos | https://github.com/dimiro1/banner |
| go-pretty | Tablas, texto y barras de progreso estéticos para línea de comandos | https://github.com/jedib0t/go-pretty |
| progressbar | Barra de progreso segura para hilos en línea de comandos | https://github.com/schollz/progressbar |
| go-ansi | Utilidades de secuencias de escape ANSI portátiles para Windows en Go | https://github.com/k0kubun/go-ansi |
| go-isatty | Biblioteca para determinar si es una tty | https://github.com/mattn/go-isatty |
Compresión y Descompresión
| Nombre | Descripción | Repositorio |
|---|---|---|
| klauspost/compress | Optimización y mejora de la biblioteca estándar compress | https://github.com/klauspost/compress |
| alexmullins/zip | Rama fork de la biblioteca estándar archive/zip, soporta contraseñas | https://github.com/alexmullins/zip |
| mholt/archiver | Biblioteca de compresión y descompresión que soporta muchos formatos (muy recomendada personalmente) | https://github.com/mholt/archiver |
| go-car | Implementación de archivos de archivo CAR en Go | https://github.com/ipld/go-car |
| go-unarr | Una biblioteca de compresión y descompresión | https://github.com/gen2brain/go-unarr |
| xz | Biblioteca pura en Golang para leer y escribir archivos comprimidos xz | https://github.com/ulikunitz/xz |
Fecha y Hora
| Nombre | Descripción | Repositorio |
|---|---|---|
| carbon | Biblioteca de procesamiento de fecha y hora | https://github.com/golang-module/carbon |
| robfig/cron | Biblioteca de tareas programadas | https://pkg.go.dev/github.com/robfig/cron/v3 |
| gron | Biblioteca de tareas programadas | https://github.com/roylee0704/gron |
| jobrunner | Framework de tareas programadas asíncronas | https://github.com/bamzi/jobrunner |
| dataparse | Puede analizar cadenas de tiempo sin conocer el formato | https://github.com/araddon/dateparse |
| jinzhu/now | Biblioteca de herramientas de fecha | https://github.com/jinzhu/now |
Inyección de Dependencias
| Nombre | Descripción | Repositorio |
|---|---|---|
| dig | Biblioteca de inyección de dependencias de código abierto por Uber, basada en reflexión | https://darjun.github.io/2020/02/22/godailylib/dig/ |
| wire | Biblioteca de inyección de dependencias de código abierto por Google, basada en generación de código | https://github.com/google/wire |
| inject | Herramienta de inyección de dependencias | https://github.com/codegangsta/inject |
| di | Contenedor de inyección de dependencias | https://github.com/sarulabs/di |
Geolocalización
| Nombre | Descripción | Repositorio |
|---|---|---|
| geoip2-golang | Conversión de IP a información geográfica | https://github.com/oschwald/geoip2-golang |
| ip2location-go | Conversión de IP a información geográfica | https://github.com/ip2location/ip2location-go |
Frameworks de Web Scraping
| Nombre | Descripción | Repositorio |
|---|---|---|
| colly | Framework de scraping simple y potente | https://github.com/gocolly/colly |
| goquery | Similar a jQuery | https://github.com/PuerkitoBio/goquery |
Herramientas de Red
| Nombre | Descripción | Repositorio |
|---|---|---|
| gentleman | Cliente HTTP impulsado por plugins y extensible | https://github.com/h2non/gentleman |
| resty | Cliente HTTP RESTful | https://pkg.go.dev/github.com/go-resty/resty/v2 |
| gopeed | Gestor de descargas moderno que soporta todas las plataformas, basado en Go y Flutter | https://github.com/GopeedLab/gopeed |
Correo Electrónico
| Nombre | Descripción | Repositorio |
|---|---|---|
| jordan-wright/email | Biblioteca de envío de correo robusta y flexible | https://github.com/jordan-wright/email |
| gomail | Biblioteca de envío de correo | https://github.com/go-gomail/gomail |
| go-simple-mail | Biblioteca de envío de correo simple | https://github.com/xhit/go-simple-mail |
| go-mail | Biblioteca de envío de correo fácil de usar y completa | https://github.com/wneessen/go-mail |
| email-verifier | Verifica si un correo es válido sin necesidad de enviar correos | https://github.com/AfterShip/email-verifier |
| maddy | Servidor de correo modular | https://github.com/foxcpp/maddy |
| mox | Servidor de correo auto-alojado de código abierto, completo y de alto mantenimiento | https://github.com/mjl-/mox |
| hermes | Biblioteca de generación de plantillas de correo | https://github.com/matcornic/hermes |
| listmonk | Gestión de listas de correo de alto rendimiento, auto-alojada y visual | https://github.com/knadh/listmonk |
| go-smtp | Cliente y servidor SMTP escrito en Go | https://github.com/emersion/go-smtp |
| go-imap | Cliente y servidor IMAP escrito en Go | https://github.com/emersion/go-imap |
Desarrollo de Juegos
| Nombre | Descripción | Repositorio |
|---|---|---|
| ebitengine | Un motor de juegos 2D súper simple | https://github.com/hajimehoshi/ebiten |
| Azul3D | Un motor de juegos 3D escrito en Go | https://github.com/azul3d/engine |
| engo | Motor de juegos 2D de código abierto escrito en Go | https://github.com/EngoEngine/engo |
| g3n/engine | Motor de juegos 3D en Go | https://github.com/g3n/engine |
| gonet | Un framework de servidor de juegos | https://github.com/xtaci/gonet |
| leaf | Framework de servidor de juegos | https://github.com/name5566/leaf |
| cloud-game | Servicio de juegos en la nube basado en web | https://github.com/giongto35/cloud-game |
GUI
| Nombre | Descripción | Repositorio |
|---|---|---|
| fyne | Kit de desarrollo de GUI multiplataforma (realmente tiene algo) | https://github.com/fyne-io/fyne |
| go-flutter | Escribir Flutter con Go | https://github.com/go-flutter-desktop/go-flutter |
| Wails | Puede considerarse como una alternativa rápida y ligera a Electron para Go | https://github.com/wailsapp/wails |
Interacción con el Sistema
| Nombre | Descripción | Repositorio |
|---|---|---|
| gopsutil | Obtención de información del sistema operativo, compatible con sistemas principales | https://github.com/shirou/gopsutil |
| flock | Bloqueo de archivos basado en llamadas del sistema operativo | https://github.com/gofrs/flock |
| sys | Biblioteca oficial de interacción con el sistema operativo | https://cs.opensource.google/go/x/sys |
Interacción entre Lenguajes
| Nombre | Descripción | Repositorio |
|---|---|---|
| gopher-lua | Máquina virtual Lua escrita en Go | https://github.com/yuin/gopher-lua |
| go-lua | Máquina virtual Lua escrita en Go | https://github.com/Shopify/go-lua |
| goja | Soporta ES5.1+ | https://github.com/dop251/goja |
| tengo | Tengo es un lenguaje de scripting Go pequeño, dinámico, rápido y seguro | https://github.com/d5/tengo |
| goby | Un lenguaje de scripting interpretado inspirado en Ruby e implementado en Go | https://github.com/goby-lang/goby |
| go+ | Lenguaje de scripting de código abierto por Qiniu Cloud, puede interactuar sin problemas con Go, también conocido como lenguaje Q | https://github.com/goplus/gop |
| go-python | Go llama a cpython2 | https://github.com/sbinet/go-python |
| go-python3 | Go llama a cpython3 | https://github.com/DataDog/go-python3 |
Procesamiento de Imágenes
| Nombre | Descripción | Repositorio |
|---|---|---|
| plot | Una biblioteca de gráficos, usada principalmente para visualización de datos | https://github.com/gonum/plot |
| gg | Biblioteca de gráficos 2D | https://github.com/fogleman/gg |
| gocv | Soporta OpenCV 4+ | https://github.com/hybridgroup/gocv |
| imaging | Una biblioteca de procesamiento de imágenes simple | https://github.com/disintegration/imaging |
Procesamiento de Texto
| Nombre | Descripción | Repositorio |
|---|---|---|
| vale | Herramienta de corrección de texto con conciencia gramatical | https://github.com/errata-ai/vale |
Autenticación y Autorización
| Nombre | Descripción | Repositorio |
|---|---|---|
| casbin | Biblioteca de gestión de permisos flexible y potente | https://github.com/casbin/casbin |
| openfga | Biblioteca de permisos/autorización de alto rendimiento, originada en Google Zanzibar | https://github.com/openfga/openfga |
Generación de Código
| Nombre | Descripción | Repositorio |
|---|---|---|
| jennifer | Biblioteca de generación de código | https://github.com/dave/jennifer |
Procesamiento de Expresiones Regulares
| Nombre | Descripción | Repositorio |
|---|---|---|
| commonregx | Una biblioteca que recopila expresiones regulares comunes | https://github.com/mingrammer/commonregex |
Procesamiento de Archivos
| Nombre | Descripción | Repositorio |
|---|---|---|
| filebox | Biblioteca de herramientas de operación de archivos | https://github.com/dstgo/filebox |
| size | Conversión rápida entre tamaño de archivo y cadena | https://github.com/dstgo/size |
| checksum | Una biblioteca para calcular firmas hash de archivos | https://github.com/codingsince1985/checksum |
| pdfcpu | Procesador de PDF | https://github.com/pdfcpu/pdfcpu |
| unioffice | Biblioteca de procesamiento de Office | https://github.com/unidoc/unioffice |
| gooxml | Biblioteca de procesamiento de Office | https://github.com/carmel/gooxml |
| excelize | Biblioteca de procesamiento de Excel | https://github.com/360EntSecGroup-Skylar/excelize |
Herramientas Generales
| Nombre | Descripción | Repositorio |
|---|---|---|
| lancet | Biblioteca de herramientas multifuncional, similar al paquete common de Java | https://github.com/duke-git/lancet |
| bytebufferpool | Pool de búfer de bytes | https://github.com/valyala/bytebufferpool |
Frameworks de Desarrollo
| Nombre | Descripción | Repositorio |
|---|---|---|
| goframe | Framework de desarrollo Go empresarial moderno | https://github.com/gogf/gf |
Protocolos de Consenso
| Nombre | Descripción | Repositorio |
|---|---|---|
| hashicorp/raft | Biblioteca raft de código abierto por Consul | https://github.com/hashicorp/raft |
| hashicorp/memberlist | Biblioteca gossip de código abierto por Consul | https://github.com/hashicorp/memberlist |
| etcd-io/raft | Biblioteca raft de código abierto por etcd | https://github.com/etcd-io/raft |
OCR
| Nombre | Descripción | Repositorio |
|---|---|---|
| gosseract | Biblioteca OCR que usa la biblioteca Tesseract C++ | https://github.com/otiai10/gosseract |
