Grande Raccolta di Librerie Open Source Go
Raccogliamo alcune librerie e framework open source di terze parti per Go e li organizziamo per facilitare la navigazione. Siamo anche lieti di accettare PR per aggiungere nuovi progetti.
TIP
L'ordine di presentazione non rappresenta una classifica. La qualità d'uso deve essere valutata in base all'esperienza effettiva.
Framework Web
| Nome | Descrizione | Repository |
|---|---|---|
| gin | Il framework web più classico | https://github.com/gin-gonic/gin |
| beego | Framework web sviluppato da sviluppatori cinesi | https://github.com/beego/beego |
| iris | Noto come il framework web più veloce | https://github.com/kataras/iris |
| echo | Framework web minimalista ad alte prestazioni | https://github.com/labstack/echo |
| goji | Framework web conciso | https://github.com/zenazn/goji |
| revel | Framework web full-stack ad alta disponibilità | https://github.com/revel/revel |
| buffalo | Framework web che consente di costruire facilmente progetti full-stack | https://github.com/gobuffalo/buffalo |
| hertz | Framework HTTP per microservizi con alte prestazioni e forte scalabilità (open source di ByteDance) | https://github.com/cloudwego/hertz |
| dotweb | Un semplice micro framework web | https://github.com/devfeel/dotweb |
| fiber | Framework Web in stile Node.js Express | https://github.com/gofiber/fiber |
ORM
| Nome | Descrizione | Repository |
|---|---|---|
| gorm | Libreria ORM user-friendly per sviluppatori | https://github.com/go-gorm/gorm |
| xorm | ORM semplice e potente | https://gitea.com/xorm/xorm |
| ent | ORM open source di Facebook | https://github.com/ent/ent |
| sqlx | Potente estensione per la libreria sql | https://github.com/jmoiron/sqlx |
| beego/orm | ORM integrato in beego | https://github.com/astaxie/beego/tree/master/orm |
| rel | ORM moderno ed estensibile | https://github.com/go-rel/rel |
| bun | ORM con priorità SQL | https://github.com/uptrace/bun |
Framework per Microservizi
| Nome | Descrizione | Repository |
|---|---|---|
| kratos | Framework per microservizi cloud-native (open source di Bilibili) | https://github.com/go-kratos/kratos |
| go-kit | Una libreria di strumenti per lo sviluppo di microservizi | https://github.com/go-kit/kit |
| kitex | Framework per microservizi ad alte prestazioni e altamente estensibile (open source di ByteDance) | https://github.com/cloudwego/kitex |
| go-zero | Framework per microservizi cloud-native (open source di Qiniu Cloud) | https://github.com/zeromicro/go-zero |
| go-micro | Un framework per microservizi straniero | https://github.com/go-micro/go-micro |
| kite | Framework per microservizi (non aggiornato da molto tempo) | https://github.com/koding/kite |
| dubbo-go | Implementazione Go di Java Dubbo (open source di Alibaba) | https://github.com/apache/dubbo-go |
| tarsgo | Implementazione Go di Tars (open source di Tencent) | https://github.com/TarsCloud/TarsGo |
| juptiers | Framework per microservizi orientato alla governance (open source di Douyu) | https://github.com/douyu/jupiter |
| redsync | Lock distribuito Redis | https://github.com/go-redsync/redsync |
Easter Egg
Jupiter di Douyu prende il nome da Zeus, il re degli dei, mentre Kratos di Bilibili prende il nome da Kratos, il dio della guerra, che in seguito uccise Zeus, il re degli dei.
Componenti di Logging
| Nome | Descrizione | Repository |
|---|---|---|
| logrus | Libreria di logging strutturato | https://github.com/sirupsen/logrus |
| zap | Libreria di logging ad alte prestazioni open source di Uber | https://github.com/uber-go/zap |
| glog | Logging con livelli gerarchici | https://github.com/golang/glog |
| zerolog | Logging JSON con allocazione di memoria zero | https://github.com/rs/zerolog |
| apex/log | Libreria di logging strutturato | https://github.com/apex/log |
| lumberjack | Libreria per la rotazione dei log, supporta rotazione per dimensione, data e compressione file | https://github.com/natefinch/lumberjack |
Componenti di Testing
| Nome | Descrizione | Repository |
|---|---|---|
| testify | Il pacchetto di strumenti di testing più popolare | https://github.com/stretchr/testify |
| ginkgo | Framework di testing moderno | https://github.com/onsi/ginkgo |
| ramsql | Motore SQL in memoria, utilizzato principalmente per test unitari SQL | https://github.com/proullon/ramsql |
| go-sqlmock | SQL Mock per testing | https://github.com/DATA-DOG/go-sqlmock |
| goconvey | Testing con visualizzazione nel browser | https://github.com/smartystreets/goconvey |
| go-stress-testing | Strumento di stress testing | https://github.com/link1st/go-stress-testing |
| xgo | Framework di stub testing per Go, implementato riscrivendo il codice durante la compilazione | https://github.com/xhd2015/xgo |
| gomonkey | Framework di stub testing per Go, implementato modificando l'indirizzo della funzione | https://github.com/agiledragon/gomonkey |
Elaborazione Dati
| Nome | Descrizione | Repository |
|---|---|---|
| mapstructure | Conversione reciproca tra map e struct | https://github.com/mitchellh/mapstructure |
| cast | Conversione di tipi di dati semplice e conveniente | https://github.com/spf13/cast |
| deepcopy | Copia profonda | https://github.com/mohae/deepcopy |
| copier | Copia valori tra struct con campi con lo stesso nome | https://github.com/jinzhu/copier |
| go-pinyin | Conversione da caratteri cinesi a pinyin | https://github.com/mozillazg/go-pinyin |
| go-streams | Elaborazione dati in streaming | https://github.com/reugn/go-streams |
| stream | Elaborazione in streaming | https://github.com/xyctruth/stream |
| go-humanize | Converte i dati in formati leggibili dall'uomo | https://github.com/dustin/go-humanize |
| uniseg | Segmentazione testo Unicode, word wrap e calcolo larghezza stringhe in Go | https://github.com/rivo/uniseg |
Validazione Dati
| Nome | Descrizione | Repository |
|---|---|---|
| go-playground/validator/v10 | Validatore di dati | https://github.com/go-playground/validator |
| go-cmp | Libreria open source di Google per confrontare valori | https://github.com/google/go-cmp |
| ozzo-validation | Libreria di validazione dati basata su regole | https://github.com/go-ozzo/ozzo-validation |
| go-tagexpr | Libreria di validazione tag struct | https://github.com/bytedance/go-tagexpr |
Strutture Dati
| Nome | Descrizione | Repository |
|---|---|---|
| gods | Implementazione di strutture dati comuni | https://github.com/emirpasic/gods |
| go-datastructures | Implementazione di strutture dati comuni | https://github.com/Workiva/go-datastructures |
| biset | Implementazione di bitset in Go | https://github.com/bits-and-blooms/bitset |
| bloom | Implementazione di bloom filter in Go | https://github.com/bits-and-blooms/bloom |
| deque | Implementazione di coda double-ended ad alte prestazioni | https://github.com/edwingeng/deque |
| concurrent-map | Implementazione di map segmentate thread-safe | https://github.com/orcaman/concurrent-map |
| samber/lo | Libreria di elaborazione dati in stile Lodash, supporta generics | https://github.com/samber/lo |
| google/btree | Libreria BTree implementata da Google, supporta generics | https://github.com/google/btree |
| gostl | Libreria di strutture dati simile a C++ STL | https://github.com/liyue201/gostl |
Calcolo Matematico
| Nome | Descrizione | Repository |
|---|---|---|
| gonum | Analogo a numpy | https://github.com/gonum/gonum |
| decimal | Libreria per operazioni con numeri in virgola mobile ad alta precisione | https://github.com/shopspring/decimal |
| crunch | Una libreria che semplifica le operazioni su byte e bit | https://github.com/superwhiskers/crunch |
| math-engine | Libreria motore per l'analisi e il calcolo di espressioni matematiche | https://github.com/dengsgo/math-engine |
Motori di Template
| Nome | Descrizione | Repository |
|---|---|---|
| pongo2 | Motore di template in stile Django | https://github.com/flosch/pongo2 |
| ace | Motore di template html | https://github.com/yosssi/ace |
| mustache | Implementazione Go di mustache | https://github.com/hoisie/mustache |
| hero | Motore di template potente e veloce | https://github.com/shiyanhui/hero |
| quictemplate | Come suggerisce il nome, motore di template ad alte prestazioni | https://github.com/valyala/quicktemplate |
| amber | Motore di template derivato da HAML e Jade | https://github.com/eknkc/amber |
Componenti di Caching
| Nome | Descrizione | Repository |
|---|---|---|
| golang-lru | LRU thread-safe e cache LRU 2Q | https://github.com/hashicorp/golang-lru |
| ttlcache | Cache in memoria, supporta TTL e generics | https://github.com/jellydator/ttlcache |
| gocache | Gestore middleware per cache | https://github.com/eko/gocache |
| go-cache | Cache in memoria, adatta per applicazioni single-node, supporta TTL | https://github.com/patrickmn/go-cache |
| ristretto | Cache in memoria ad alte prestazioni | https://github.com/dgraph-io/ristretto |
| bigcache | Cache efficiente per chiavi di grandi dimensioni basata su memoria | https://github.com/allegro/bigcache |
Database e Driver
| Nome | Descrizione | Repository |
|---|---|---|
| modernc.org/sqlite | Driver sqlite, scritto in puro go, non richiede cgo | https://gitlab.com/cznic/sqlite |
| mattn/go-sqlite3 | Driver sqlite, richiede cgo | https://github.com/mattn/go-sqlite3 |
| denisenkom/go-mssqldb | Driver sqlserver, non molto aggiornato, si consiglia di usare la versione Microsoft | https://github.com/denisenkom/go-mssqldb |
| microsoft/go-mssqldb | Driver sqlserver, nuovo branch fork e mantenuto da 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 ufficiale oracle | https://github.com/oracle/oci-go-sdk |
| go-ora | Driver oracle, scritto in puro go | https://github.com/sijms/go-ora |
| badger | Database kv embedded, basato su LSM | https://github.com/dgraph-io/badger |
| boltdb | Database kv embedded, basato su B+Tree | https://github.com/boltdb/bolt |
| goleveldb | Implementazione Go di leveldb | https://github.com/syndtr/goleveldb |
| qmgo | Libreria per operazioni mongodb open source di Qiniu Cloud | https://github.com/qiniu/qmgo |
| mongo-go-driver | Driver ufficiale Go per mongodb | https://github.com/mongodb/mongo-go-driver |
| rqlite | Database relazionale distribuito leggero basato su sqlite | https://github.com/rqlite/rqlite/ |
| go-mysql | Una potente raccolta di strumenti MySQL | https://github.com/go-mysql-org/go-mysql |
| go-mysql-elasticsearch | Strumento per sincronizzare dati MySQL su Elasticsearch | https://github.com/go-mysql-org/go-mysql-elasticsearch |
| gofound | Motore di indicizzazione full-text single-node per miliardi di documenti | https://github.com/sea-team/gofound |
| bleve | Libreria di ricerca full-text | https://github.com/blevesearch/bleve |
Serializzazione
| Nome | Descrizione | Repository |
|---|---|---|
| go-ini | Libreria di serializzazione per file ini | https://github.com/go-ini/ini |
| sonic | Libreria di serializzazione json ad alte prestazioni open source di ByteDance | https://github.com/bytedance/sonic |
| easyjson | Libreria di serializzazione json veloce | https://github.com/mailru/easyjson |
| gjson | Recupero rapido di valori da chiavi json, non una libreria di serializzazione tradizionale | https://github.com/tidwall/gjson |
| go-yaml | Libreria di serializzazione yaml | https://github.com/go-yaml/yaml |
| go-toml | Libreria di serializzazione toml | https://github.com/pelletier/go-toml |
| properties | Libreria di serializzazione properties | https://github.com/magiconair/properties |
| viper | Supporta la serializzazione di più formati di dati, è anche un gestore di configurazioni | https://github.com/spf13/viper |
| configor | Serializzatore di più formati di dati scritto dall'autore di gorm, gestore di configurazioni | https://github.com/jinzhu/configor |
Riga di Comando
| Nome | Descrizione | Repository |
|---|---|---|
| pflag | Pacchetto flag in stile POSIX/GNU | https://github.com/spf13/pflag |
| go-flags | Analizzatore di parametri per riga di comando | https://github.com/jessevdk/go-flags |
| cobra | Scaffold moderno per costruire programmi da riga di comando | https://github.com/spf13/cobra |
| dimiro1/banner | Libreria per costruire banner esteticamente gradevoli | https://github.com/dimiro1/banner |
| go-pretty | Tabelle, testo e barre di progresso esteticamente gradevoli per riga di comando | https://github.com/jedib0t/go-pretty |
| progressbar | Barra di progresso per riga di comando thread-safe | https://github.com/schollz/progressbar |
| go-ansi | Utility portabile per sequenze di escape ANSI per Windows per Go | https://github.com/k0kubun/go-ansi |
| go-isatty | Libreria per determinare se si tratta di un tty | https://github.com/mattn/go-isatty |
Compressione e Decompressione
| Nome | Descrizione | Repository |
|---|---|---|
| klauspost/compress | Ottimizzazione e miglioramento della libreria standard compress | https://github.com/klauspost/compress |
| alexmullins/zip | Fork della libreria standard archive/zip, supporta password | https://github.com/alexmullins/zip |
| mholt/archiver | Libreria di compressione e decompressione che supporta molti formati (altamente raccomandata personalmente) | https://github.com/mholt/archiver |
| go-car | Implementazione Go di file di archivio CAR | https://github.com/ipld/go-car |
| go-unarr | Una libreria di compressione e decompressione | https://github.com/gen2brain/go-unarr |
| xz | Libreria Go pura per leggere e scrivere file compressi xz | https://github.com/ulikunitz/xz |
Data e Ora
| Nome | Descrizione | Repository |
|---|---|---|
| carbon | Libreria per la gestione di date e orari | https://github.com/golang-module/carbon |
| robfig/cron | Libreria per attività pianificate | https://pkg.go.dev/github.com/robfig/cron/v3 |
| gron | Libreria per attività pianificate | https://github.com/roylee0704/gron |
| jobrunner | Framework per attività pianificate asincrone | https://github.com/bamzi/jobrunner |
| dataparse | Analizza stringhe di tempo senza conoscere il formato | https://github.com/araddon/dateparse |
| jinzhu/now | Libreria di utility per date | https://github.com/jinzhu/now |
Dependency Injection
| Nome | Descrizione | Repository |
|---|---|---|
| dig | Libreria di dependency injection open source di Uber, basata su reflection | https://darjun.github.io/2020/02/22/godailylib/dig/ |
| wire | Libreria di dependency injection open source di Google, basata su code generation | https://github.com/google/wire |
| inject | Strumento di dependency injection | https://github.com/codegangsta/inject |
| di | Container di dependency injection | https://github.com/sarulabs/di |
Geolocalizzazione
| Nome | Descrizione | Repository |
|---|---|---|
| geoip2-golang | Conversione IP in informazioni geografiche | https://github.com/oschwald/geoip2-golang |
| ip2location-go | Conversione IP in informazioni geografiche | https://github.com/ip2location/ip2location-go |
Framework per Web Scraping
| Nome | Descrizione | Repository |
|---|---|---|
| colly | Framework per web scraping semplice e potente | https://github.com/gocolly/colly |
| goquery | Simile a jQuery | https://github.com/PuerkitoBio/goquery |
Strumenti di Rete
| Nome | Descrizione | Repository |
|---|---|---|
| gentleman | Client http plugin-driven ed estensibile | https://github.com/h2non/gentleman |
| resty | Client http restful | https://pkg.go.dev/github.com/go-resty/resty/v2 |
| gopeed | Moderno download manager che supporta tutte le piattaforme, basato su go e flutter | https://github.com/GopeedLab/gopeed |
Email
| Nome | Descrizione | Repository |
|---|---|---|
| jordan-wright/email | Libreria per l'invio di email robusta e flessibile | https://github.com/jordan-wright/email |
| gomail | Libreria per l'invio di email | https://github.com/go-gomail/gomail |
| go-simple-mail | Libreria semplice per l'invio di email | https://github.com/xhit/go-simple-mail |
| go-mail | Libreria completa e facile da usare per l'invio di email | https://github.com/wneessen/go-mail |
| email-verifier | Verifica se un'email è valida senza inviare email | https://github.com/AfterShip/email-verifier |
| maddy | Server di email modulare | https://github.com/foxcpp/maddy |
| mox | Server di email open source completo, altamente manutenibile e self-hosted | https://github.com/mjl-/mox |
| hermes | Libreria per generare template di email | https://github.com/matcornic/hermes |
| listmonk | Gestione di mailing list ad alte prestazioni, self-hosted e con interfaccia visiva | https://github.com/knadh/listmonk |
| go-smtp | Client e server SMTP scritti in Go | https://github.com/emersion/go-smtp |
| go-imap | Client e server IMAP scritti in Go | https://github.com/emersion/go-imap |
Sviluppo di Giochi
| Nome | Descrizione | Repository |
|---|---|---|
| ebitengine | Un motore per giochi 2d super semplice | https://github.com/hajimehoshi/ebiten |
| Azul3D | Un motore per giochi 3d scritto in Go | https://github.com/azul3d/engine |
| engo | Motore per giochi 2d open source scritto in Go | https://github.com/EngoEngine/engo |
| g3n/engine | Motore per giochi 3d in Go | https://github.com/g3n/engine |
| gonet | Un framework per server di giochi | https://github.com/xtaci/gonet |
| leaf | Framework per server di giochi | https://github.com/name5566/leaf |
| cloud-game | Servizio di cloud gaming basato su web | https://github.com/giongto35/cloud-game |
GUI
| Nome | Descrizione | Repository |
|---|---|---|
| fyne | Toolkit per sviluppo GUI cross-platform (davvero valido) | https://github.com/fyne-io/fyne |
| go-flutter | Scrivi Flutter con Go | https://github.com/go-flutter-desktop/go-flutter |
| Wails | Può essere considerato come un'alternativa Electron veloce e leggera per Go | https://github.com/wailsapp/wails |
Interazione con il Sistema
| Nome | Descrizione | Repository |
|---|---|---|
| gopsutil | Ottieni informazioni sul sistema operativo, compatibile con i sistemi principali | https://github.com/shirou/gopsutil |
| flock | Lock su file basata su chiamate di sistema operativo | https://github.com/gofrs/flock |
| sys | Libreria ufficiale per l'interazione con il sistema operativo | https://cs.opensource.google/go/x/sys |
Interazione tra Linguaggi
| Nome | Descrizione | Repository |
|---|---|---|
| gopher-lua | Macchina virtuale Lua scritta in Go | https://github.com/yuin/gopher-lua |
| go-lua | Macchina virtuale Lua scritta in Go | https://github.com/Shopify/go-lua |
| goja | Supporta ES5.1+ | https://github.com/dop251/goja |
| tengo | Tengo è un linguaggio di scripting Go piccolo, dinamico, veloce e sicuro | https://github.com/d5/tengo |
| goby | Un linguaggio di scripting interpretato ispirato a Ruby e implementato in Go | https://github.com/goby-lang/goby |
| go+ | Linguaggio di scripting open source di Qiniu Cloud, può interagire senza soluzione di continuità con Go, noto anche come linguaggio Q | https://github.com/goplus/gop |
| go-python | Go chiama CPython2 | https://github.com/sbinet/go-python |
| go-python3 | Go chiama CPython3 | https://github.com/DataDog/go-python3 |
Elaborazione di Immagini
| Nome | Descrizione | Repository |
|---|---|---|
| plot | Una libreria di plotting, utilizzata principalmente per la visualizzazione di dati | https://github.com/gonum/plot |
| gg | Libreria di disegno 2d | https://github.com/fogleman/gg |
| gocv | Supporta OpenCV 4+ | https://github.com/hybridgroup/gocv |
| imaging | Una semplice libreria di elaborazione immagini | https://github.com/disintegration/imaging |
Elaborazione di Testo
| Nome | Descrizione | Repository |
|---|---|---|
| vale | Strumento di correzione testo con consapevolezza grammaticale | https://github.com/errata-ai/vale |
Autenticazione e Autorizzazione
| Nome | Descrizione | Repository |
|---|---|---|
| casbin | Libreria di gestione permessi flessibile e potente | https://github.com/casbin/casbin |
| openfga | Libreria di permessi/autorizzazione ad alte prestazioni, derivata da Google Zanzibar | https://github.com/openfga/openfga |
Generazione di Codice
| Nome | Descrizione | Repository |
|---|---|---|
| jennifer | Libreria di generazione codice | https://github.com/dave/jennifer |
Elaborazione di Espressioni Regolari
| Nome | Descrizione | Repository |
|---|---|---|
| commonregx | Una libreria che raccoglie espressioni regolari comunemente utilizzate | https://github.com/mingrammer/commonregex |
Elaborazione di File
| Nome | Descrizione | Repository |
|---|---|---|
| filebox | Libreria di utility per operazioni su file | https://github.com/dstgo/filebox |
| size | Conversione rapida tra dimensioni file e stringhe | https://github.com/dstgo/size |
| checksum | Una libreria per calcolare firme hash di file | https://github.com/codingsince1985/checksum |
| pdfcpu | Processore PDF | https://github.com/pdfcpu/pdfcpu |
| unioffice | Libreria per elaborazione Office | https://github.com/unidoc/unioffice |
| gooxml | Libreria per elaborazione Office | https://github.com/carmel/gooxml |
| pdfcpu | Libreria per elaborazione PDF | https://github.com/pdfcpu/pdfcpu |
| excelize | Libreria per elaborazione Excel | https://github.com/360EntSecGroup-Skylar/excelize |
Strumenti Generici
| Nome | Descrizione | Repository |
|---|---|---|
| lancet | Libreria di utility multifunzionale, analoga al pacchetto common di Java | https://github.com/duke-git/lancet |
| bytebufferpool | Pool di buffer di byte | https://github.com/valyala/bytebufferpool |
Framework di Sviluppo
| Nome | Descrizione | Repository |
|---|---|---|
| goframe | Moderno framework di sviluppo enterprise per Go | https://github.com/gogf/gf |
Protocolli di Consenso
| Nome | Descrizione | Repository |
|---|---|---|
| hashicorp/raft | Libreria raft open source di Consul | https://github.com/hashicorp/raft |
| hashicorp/memberlist | Libreria gossip open source di Consul | https://github.com/hashicorp/memberlist |
| etcd-io/raft | Libreria raft open source di Etcd | https://github.com/etcd-io/raft |
OCR
| Nome | Descrizione | Repository |
|---|---|---|
| gosseract | Libreria OCR che utilizza la libreria C++ Tesseract | https://github.com/otiai10/gosseract |
