Grande Coleção de Bibliotecas Open Source Go
Coleção de algumas bibliotecas e frameworks open source de terceiros em Go, organizados e classificados para facilitar navegação posterior. Também aceitamos PRs para adicionar novos projetos.
TIP
A ordem de aparição não representa classificação. A utilidade deve ser julgada com base na experiência real.
Frameworks Web
| Nome | Descrição | Repositório |
|---|---|---|
| gin | Framework web mais clássico | https://github.com/gin-gonic/gin |
| beego | Framework web desenvolvido por desenvolvedor chinês | https://github.com/beego/beego |
| iris | Alega ser o framework web mais rápido | https://github.com/kataras/iris |
| echo | Framework web minimalista de alto desempenho | https://github.com/labstack/echo |
| goji | Framework web conciso | https://github.com/zenazn/goji |
| revel | Framework web full-stack de alta disponibilidade | https://github.com/revel/revel |
| buffalo | Framework web que permite construir projetos full-stack facilmente | https://github.com/gobuffalo/buffalo |
| hertz | Framework HTTP de microsserviços com alto desempenho e forte escalabilidade (open source pela ByteDance) | https://github.com/cloudwego/hertz |
| dotweb | Framework web micro simples | https://github.com/devfeel/dotweb |
| fiber | Framework Web no estilo Node.js Express | https://github.com/gofiber/fiber |
ORM
| Nome | Descrição | Repositório |
|---|---|---|
| gorm | Biblioteca ORM amigável para desenvolvedores | https://github.com/go-gorm/gorm |
| xorm | ORM simples e poderoso | https://gitea.com/xorm/xorm |
| ent | ORM open source pelo Facebook | https://github.com/ent/ent |
| sqlx | Extensões poderosas para biblioteca sql | https://github.com/jmoiron/sqlx |
| beego/orm | ORM nativo do beego | https://github.com/astaxie/beego/tree/master/orm |
| rel | ORM moderno e extensível | https://github.com/go-rel/rel |
| bun | ORM com foco em SQL | https://github.com/uptrace/bun |
Frameworks de Microsserviços
| Nome | Descrição | Repositório |
|---|---|---|
| kratos | Framework de microsserviços cloud native (open source pelo Bilibili) | https://github.com/go-kratos/kratos |
| go-kit | Biblioteca de ferramentas para desenvolvimento de microsserviços | https://github.com/go-kit/kit |
| kitex | Framework de microsserviços de alto desempenho e alta extensibilidade (open source pela ByteDance) | https://github.com/cloudwego/kitex |
| go-zero | Framework de microsserviços cloud native (open source pela Qiniu Cloud) | https://github.com/zeromicro/go-zero |
| go-micro | Um framework de microsserviços estrangeiro | https://github.com/go-micro/go-micro |
| kite | Framework de microsserviços (não atualizado há muito tempo) | https://github.com/koding/kite |
| dubbo-go | Implementação em Go do Java Dubbo (open source pela Alibaba) | https://github.com/apache/dubbo-go |
| tarsgo | Implementação em Go do Tars (open source pela Tencent) | https://github.com/TarsCloud/TarsGo |
| juptiers | Framework de microsserviços orientado à governança (open source pelo Douyu) | https://github.com/douyu/jupiter |
| redsync | Lock distribuído Redis | https://github.com/go-redsync/redsync |
Easter Egg
O jupiter do Douyu leva o nome de Zeus, o rei dos deuses, enquanto o kratos do Bilibili leva o nome de Kratos, o deus da guerra, que mais tarde matou Zeus.
Componentes de Log
| Nome | Descrição | Repositório |
|---|---|---|
| logrus | Biblioteca de logs estruturados | https://github.com/sirupsen/logrus |
| zap | Biblioteca de logs de alto desempenho open source pela Uber | https://github.com/uber-go/zap |
| glog | Logs com execução por nível | https://github.com/golang/glog |
| zerolog | Logs JSON com zero alocação de memória | https://github.com/rs/zerolog |
| apex/log | Biblioteca de logs estruturados | https://github.com/apex/log |
| lumberjack | Biblioteca de rotação de logs, suporta rotação por tamanho, data e compressão de arquivos | https://github.com/natefinch/lumberjack |
Componentes de Teste
| Nome | Descrição | Repositório |
|---|---|---|
| testify | Pacote de ferramentas de teste mais popular | https://github.com/stretchr/testify |
| ginkgo | Framework de teste moderno | https://github.com/onsi/ginkgo |
| ramsql | Motor SQL baseado em memória, usado principalmente para testes unitários de SQL | https://github.com/proullon/ramsql |
| go-sqlmock | SQL Mock para testes | https://github.com/DATA-DOG/go-sqlmock |
| goconvey | Testes visualizados no navegador | https://github.com/smartystreets/goconvey |
| go-stress-testing | Ferramenta de teste de pressão | https://github.com/link1st/go-stress-testing |
| xgo | Framework de teste de stub em Go, implementado através de reescrita de código em tempo de compilação | https://github.com/xhd2015/xgo |
| gomonkey | Framework de teste de stub em Go, implementado modificando endereços de função | https://github.com/agiledragon/gomonkey |
Processamento de Dados
| Nome | Descrição | Repositório |
|---|---|---|
| mapstructure | Conversão entre map e struct | https://github.com/mitchellh/mapstructure |
| cast | Conversão de tipos de dados conveniente | https://github.com/spf13/cast |
| deepcopy | Cópia profunda | https://github.com/mohae/deepcopy |
| copier | Copia valores entre campos de mesmo nome em structs | https://github.com/jinzhu/copier |
| go-pinyin | Conversão de caracteres chineses para pinyin | https://github.com/mozillazg/go-pinyin |
| go-streams | Processamento de dados em fluxo | https://github.com/reugn/go-streams |
| stream | Processamento em fluxo | https://github.com/xyctruth/stream |
| go-humanize | Converte dados para formatos legíveis por humanos | https://github.com/dustin/go-humanize |
| uniseg | Segmentação de texto Unicode, quebra de palavras e cálculo de largura de string em Go | https://github.com/rivo/uniseg |
Validação de Dados
| Nome | Descrição | Repositório |
|---|---|---|
| go-playground/validator/v10 | Validador de dados | https://github.com/go-playground/validator |
| go-cmp | Biblioteca para comparação de valores open source pelo Google | https://github.com/google/go-cmp |
| ozzo-validation | Biblioteca de validação de dados baseada em regras | https://github.com/go-ozzo/ozzo-validation |
| go-tagexpr | Biblioteca de validação de tags de struct | https://github.com/bytedance/go-tagexpr |
Estruturas de Dados
| Nome | Descrição | Repositório |
|---|---|---|
| gods | Implementação de estruturas de dados comuns | https://github.com/emirpasic/gods |
| go-datastructures | Implementação de estruturas de dados comuns | https://github.com/Workiva/go-datastructures |
| biset | Implementação de bitsets em Go | https://github.com/bits-and-blooms/bitset |
| bloom | Implementação de filtros Bloom em Go | https://github.com/bits-and-blooms/bloom |
| deque | Implementação de fila duplamente terminada de alto desempenho | https://github.com/edwingeng/deque |
| concurrent-map | Implementação de map segmentado seguro para concorrência | https://github.com/orcaman/concurrent-map |
| samber/lo | Biblioteca de processamento de dados no estilo Lodash, suporta genéricos | https://github.com/samber/lo |
| google/btree | Biblioteca BTree implementada pelo Google, suporta genéricos | https://github.com/google/btree |
| gostl | Biblioteca de estruturas de dados como STL do C++ | https://github.com/liyue201/gostl |
Cálculo Matemático
| Nome | Descrição | Repositório |
|---|---|---|
| gonum | Comparável ao numpy | https://github.com/gonum/gonum |
| decimal | Biblioteca de operações de ponto flutuante de alta precisão | https://github.com/shopspring/decimal |
| crunch | Biblioteca que simplifica operações com bytes e bits | https://github.com/superwhiskers/crunch |
| math-engine | Biblioteca de motor de análise e cálculo de expressões matemáticas | https://github.com/dengsgo/math-engine |
Motor de Template
| Nome | Descrição | Repositório |
|---|---|---|
| pongo2 | Motor de template no estilo Django | https://github.com/flosch/pongo2 |
| ace | Motor de template html | https://github.com/yosssi/ace |
| mustache | Implementação do mustache em Go | https://github.com/hoisie/mustache |
| hero | Motor de template poderoso e rápido | https://github.com/shiyanhui/hero |
| quicktemplate | Motor de template de alto desempenho | https://github.com/valyala/quicktemplate |
| amber | Motor de template originado do HAML e Jade | https://github.com/eknkc/amber |
Componentes de Cache
| Nome | Descrição | Repositório |
|---|---|---|
| golang-lru | LRU seguro para threads e LRU 2Q cache | https://github.com/hashicorp/golang-lru |
| ttlcache | Cache baseado em memória, suporta TTL e genéricos | https://github.com/jellydator/ttlcache |
| gocache | Gerenciador de middleware de cache | https://github.com/eko/gocache |
| go-cache | Cache baseado em memória, adequado para aplicações single-node, suporta TTL | https://github.com/patrickmn/go-cache |
| ristretto | Cache de memória de alto desempenho | https://github.com/dgraph-io/ristretto |
| bigcache | Cache de chaves grandes eficiente baseado em memória | https://github.com/allegro/bigcache |
Banco de Dados & Drivers
| Nome | Descrição | Repositório |
|---|---|---|
| modernc.org/sqlite | Driver sqlite, escrito puramente em Go, não requer cgo | https://gitlab.com/cznic/sqlite |
| mattn/go-sqlite3 | Driver sqlite, requer cgo | https://github.com/mattn/go-sqlite3 |
| denisenkom/go-mssqldb | Driver sqlserver, não é muito atualizado, recomenda-se usar versão da Microsoft | https://github.com/denisenkom/go-mssqldb |
| microsoft/go-mssqldb | Driver sqlserver, novo branch mantido pela Microsoft | https://github.com/microsoft/go-mssqldb |
| pgx | Driver postgreSQL | https://github.com/jackc/pgx/ |
| mysql | Driver mysql | https://github.com/go-sql-driver/mysql |
| oci-go-sdk | Driver oficial oracle | https://github.com/oracle/oci-go-sdk |
| go-ora | Driver oracle, escrito puramente em Go | https://github.com/sijms/go-ora |
| badger | Banco de dados kv embutido, baseado em LSM | https://github.com/dgraph-io/badger |
| boltdb | Banco de dados kv embutido, baseado em B+Tree | https://github.com/boltdb/bolt |
| goleveldb | Implementação de leveldb em linguagem Go | https://github.com/syndtr/goleveldb |
| qmgo | Biblioteca de operação mongodb open source pela Qiniu Cloud | https://github.com/qiniu/qmgo |
| mongo-go-driver | Driver oficial mongodb do Go | https://github.com/mongodb/mongo-go-driver |
| rqlite | Banco de dados relacional distribuído leve baseado em sqlite | https://github.com/rqlite/rqlite/ |
| go-mysql | Conjunto de ferramentas MySQL poderosas | https://github.com/go-mysql-org/go-mysql |
| go-mysql-elasticsearch | Ferramenta de sincronização de dados MySQL para Elasticsearch | https://github.com/go-mysql-org/go-mysql-elasticsearch |
| gofound | Motor de busca de texto completo single-node de nível bilhão | https://github.com/sea-team/gofound |
| bleve | Biblioteca de busca de texto completo | https://github.com/blevesearch/bleve |
Serialização
| Nome | Descrição | Repositório |
|---|---|---|
| go-ini | Biblioteca de serialização de arquivos ini | https://github.com/go-ini/ini |
| sonic | Biblioteca de serialização json de alto desempenho open source pela ByteDance | https://github.com/bytedance/sonic |
| easyjson | Biblioteca de serialização rápida de json | https://github.com/mailru/easyjson |
| gjson | Acesso rápido a valores de chaves json, não é biblioteca de serialização tradicional | https://github.com/tidwall/gjson |
| go-yaml | Biblioteca de serialização yaml | https://github.com/go-yaml/yaml |
| go-toml | Biblioteca de serialização toml | https://github.com/pelletier/go-toml |
| properties | Biblioteca de serialização properties | https://github.com/magiconair/properties |
| viper | Suporta serialização de múltiplos formatos de dados, também é gerenciador de configuração | https://github.com/spf13/viper |
| configor | Serializador de múltiplos formatos de dados escrito pelo autor do gorm, gerenciador de configuração | https://github.com/jinzhu/configor |
Linha de Comando
| Nome | Descrição | Repositório |
|---|---|---|
| pflag | Pacote de flag no estilo POSIX/GUN | https://github.com/spf13/pflag |
| go-flags | Analisador de parâmetros de comando | https://github.com/jessevdk/go-flags |
| cobra | Scaffolding moderno para programas de linha de comando | https://github.com/spf13/cobra |
| dimiro1/banner | Biblioteca de construção de banners estéticos | https://github.com/dimiro1/banner |
| go-pretty | Saída estética de tabelas, texto e barras de progresso na linha de comando | https://github.com/jedib0t/go-pretty |
| progressbar | Barra de progresso segura para threads na linha de comando | https://github.com/schollz/progressbar |
| go-ansi | Utilitários de sequências de escape ANSI portáteis para Windows em Go | https://github.com/k0kubun/go-ansi |
| go-isatty | Biblioteca para判断 tty | https://github.com/mattn/go-isatty |
Compressão e Descompressão
| Nome | Descrição | Repositório |
|---|---|---|
| klauspost/compress | Otimização e melhoria da biblioteca padrão compress | https://github.com/klauspost/compress |
| alexmullins/zip | Branch do archive/zip da biblioteca padrão, suporta senhas | https://github.com/alexmullins/zip |
| mholt/archiver | Biblioteca de compressão e descompressão que suporta muitos formatos (altamente recomendado) | https://github.com/mholt/archiver |
| go-car | Implementação de arquivos de arquivo CAR em Go | https://github.com/ipld/go-car |
| go-unarr | Biblioteca de compressão e descompressão | https://github.com/gen2brain/go-unarr |
| xz | Biblioteca Go pura para leitura e escrita de arquivos compactados xz | https://github.com/ulikunitz/xz |
Data e Hora
| Nome | Descrição | Repositório |
|---|---|---|
| carbon | Biblioteca de processamento de data e hora | https://github.com/golang-module/carbon |
| robfig/cron | Biblioteca de tarefas agendadas | https://pkg.go.dev/github.com/robfig/cron/v3 |
| gron | Biblioteca de tarefas agendadas | https://github.com/roylee0704/gron |
| jobrunner | Framework de tarefas agendadas assíncronas | https://github.com/bamzi/jobrunner |
| dateparse | Pode analisar strings de tempo sem conhecer o formato | https://github.com/araddon/dateparse |
| jinzhu/now | Biblioteca de utilitários de data | https://github.com/jinzhu/now |
Injeção de Dependência
| Nome | Descrição | Repositório |
|---|---|---|
| dig | Biblioteca de injeção de dependência open source pela Uber, baseada em reflexão | https://darjun.github.io/2020/02/22/godailylib/dig/ |
| wire | Biblioteca de injeção de dependência open source pelo Google, baseada em geração de código | https://github.com/google/wire |
| inject | Ferramenta de injeção de dependência | https://github.com/codegangsta/inject |
| di | Container de injeção de dependência | https://github.com/sarulabs/di |
Localização Geográfica
| Nome | Descrição | Repositório |
|---|---|---|
| geoip2-golang | Conversão de IP para informações geográficas | https://github.com/oschwald/geoip2-golang |
| ip2location-go | Conversão de IP para informações geográficas | https://github.com/ip2location/ip2location-go |
Frameworks de Web Scraping
| Nome | Descrição | Repositório |
|---|---|---|
| colly | Framework de scraping simples e poderoso | https://github.com/gocolly/colly |
| goquery | Similar ao jQuery | https://github.com/PuerkitoBio/goquery |
Ferramentas de Rede
| Nome | Descrição | Repositório |
|---|---|---|
| gentleman | Cliente http orientado a plugins e extensível | https://github.com/h2non/gentleman |
| resty | Cliente http restful | https://pkg.go.dev/github.com/go-resty/resty/v2 |
| gopeed | Gerenciador de downloads moderno que suporta todas as plataformas, baseado em Go e Flutter | https://github.com/GopeedLab/gopeed |
E-mail
| Nome | Descrição | Repositório |
|---|---|---|
| jordan-wright/email | Biblioteca de envio de e-mails robusta e flexível | https://github.com/jordan-wright/email |
| gomail | Biblioteca de envio de e-mails | https://github.com/go-gomail/gomail |
| go-simple-mail | Biblioteca de envio de e-mails simples | https://github.com/xhit/go-simple-mail |
| go-mail | Biblioteca de envio de e-mails fácil de usar e abrangente | https://github.com/wneessen/go-mail |
| email-verifier | Verifica se o e-mail é válido sem precisar enviar e-mail | https://github.com/AfterShip/email-verifier |
| maddy | Servidor de e-mail modular | https://github.com/foxcpp/maddy |
| mox | Servidor de e-mail open source, altamente mantido e auto-hospedado | https://github.com/mjl-/mox |
| hermes | Biblioteca de geração de templates de e-mail | https://github.com/matcornic/hermes |
| listmonk | Gerenciamento de lista de e-mails de alto desempenho, auto-hospedado e visual | https://github.com/knadh/listmonk |
| go-smtp | Cliente e servidor SMTP escritos em Go | https://github.com/emersion/go-smtp |
| go-imap | Cliente e servidor IMAP escritos em Go | https://github.com/emersion/go-imap |
Desenvolvimento de Jogos
| Nome | Descrição | Repositório |
|---|---|---|
| ebitengine | Motor de jogo 2D super simples | https://github.com/hajimehoshi/ebiten |
| Azul3D | Motor de jogo 3D escrito em Go | https://github.com/azul3d/engine |
| engo | Motor de jogo 2D open source escrito em Go | https://github.com/EngoEngine/engo |
| g3n/engine | Motor de jogo 3D em Go | https://github.com/g3n/engine |
| gonet | Framework de servidor de jogo | https://github.com/xtaci/gonet |
| leaf | Framework de servidor de jogo | https://github.com/name5566/leaf |
| cloud-game | Serviço de jogo em nuvem baseado na web | https://github.com/giongto35/cloud-game |
GUI
| Nome | Descrição | Repositório |
|---|---|---|
| fyne | Kit de ferramentas de desenvolvimento GUI multiplataforma (realmente impressionante) | https://github.com/fyne-io/fyne |
| go-flutter | Escreva Flutter em Go | https://github.com/go-flutter-desktop/go-flutter |
| Wails | Pode ser visto como alternativa Electron rápida e leve para Go | https://github.com/wailsapp/wails |
Interação com Sistema
| Nome | Descrição | Repositório |
|---|---|---|
| gopsutil | Obtém informações do sistema operacional, compatível com sistemas principais | https://github.com/shirou/gopsutil |
| flock | Lock de arquivo baseado em chamadas de sistema operacional | https://github.com/gofrs/flock |
| sys | Biblioteca oficial de interação com sistema operacional | https://cs.opensource.google/go/x/sys |
Interação entre Linguagens
| Nome | Descrição | Repositório |
|---|---|---|
| gopher-lua | Máquina virtual Lua escrita em Go | https://github.com/yuin/gopher-lua |
| go-lua | Máquina virtual Lua escrita em Go | https://github.com/Shopify/go-lua |
| goja | Suporta es5.1+ | https://github.com/dop251/goja |
| tengo | Tengo é uma linguagem de script Go pequena, dinâmica, rápida e segura | https://github.com/d5/tengo |
| goby | Linguagem de script interpretada inspirada em Ruby, implementada em Go | https://github.com/goby-lang/goby |
| go+ | Linguagem de script open source pela Qiniu Cloud, pode interagir com Go sem problemas, também conhecida como linguagem Q | https://github.com/goplus/gop |
| go-python | Go chama cpython2 | https://github.com/sbinet/go-python |
| go-python3 | Go chama cpython3 | https://github.com/DataDog/go-python3 |
Processamento de Imagem
| Nome | Descrição | Repositório |
|---|---|---|
| plot | Biblioteca de desenho, usada principalmente para visualização de dados | https://github.com/gonum/plot |
| gg | Biblioteca de desenho 2D | https://github.com/fogleman/gg |
| gocv | Suporta opencv4+ | https://github.com/hybridgroup/gocv |
| imaging | Biblioteca simples de processamento de imagem | https://github.com/disintegration/imaging |
Processamento de Texto
| Nome | Descrição | Repositório |
|---|---|---|
| vale | Ferramenta de correção de texto com percepção gramatical | https://github.com/errata-ai/vale |
Autenticação e Autorização
| Nome | Descrição | Repositório |
|---|---|---|
| casbin | Biblioteca de gerenciamento de permissões flexível e poderosa | https://github.com/casbin/casbin |
| openfga | Biblioteca de permissões/autorização de alto desempenho, originada do Google Zanzibar | https://github.com/openfga/openfga |
Geração de Código
| Nome | Descrição | Repositório |
|---|---|---|
| jennifer | Biblioteca de geração de código | https://github.com/dave/jennifer |
Processamento de Expressões Regulares
| Nome | Descrição | Repositório |
|---|---|---|
| commonregx | Biblioteca que coleta expressões regulares comumente usadas | https://github.com/mingrammer/commonregex |
Processamento de Arquivos
| Nome | Descrição | Repositório |
|---|---|---|
| filebox | Biblioteca de ferramentas de operação com arquivos | https://github.com/dstgo/filebox |
| size | Conversão rápida entre tamanho de arquivo e string | https://github.com/dstgo/size |
| checksum | Biblioteca de cálculo de assinatura hash de arquivos | https://github.com/codingsince1985/checksum |
| pdfcpu | Processador de PDF | https://github.com/pdfcpu/pdfcpu |
| unioffice | Biblioteca de processamento do Office | https://github.com/unidoc/unioffice |
| gooxml | Biblioteca de processamento do Office | https://github.com/carmel/gooxml |
| excelize | Biblioteca de processamento de Excel | https://github.com/360EntSecGroup-Skylar/excelize |
Ferramentas de Uso Geral
| Nome | Descrição | Repositório |
|---|---|---|
| lancet | Biblioteca de ferramentas multifuncional, comparável ao pacote common do Java | https://github.com/duke-git/lancet |
| bytebufferpool | Pool de buffer de bytes | https://github.com/valyala/bytebufferpool |
Frameworks de Desenvolvimento
| Nome | Descrição | Repositório |
|---|---|---|
| goframe | Framework de desenvolvimento Go empresarial moderno | https://github.com/gogf/gf |
Protocolos de Consenso
| Nome | Descrição | Repositório |
|---|---|---|
| hashicorp/raft | Biblioteca raft open source pelo Consul | https://github.com/hashicorp/raft |
| hashicorp/memberlist | Biblioteca gossip open source pelo Consul | https://github.com/hashicorp/memberlist |
| etcd-io/raft | Biblioteca raft open source pelo etcd | https://github.com/etcd-io/raft |
OCR
| Nome | Descrição | Repositório |
|---|---|---|
| gosseract | Biblioteca OCR que usa biblioteca Tesseract C++ | https://github.com/otiai10/gosseract |
