Коллекция Open Source библиотек Go
Собраны и классифицированы некоторые open source сторонние библиотеки и фреймворки Go для удобства последующего просмотра. Также приветствуются pull request'ы с добавлением новых проектов.
TIP
Порядок расположения не означает рейтинг —好不好用要根据实际体验来看。
Web фреймворки
| Название | Описание | Репозиторий |
|---|---|---|
| gin | Классический web фреймворк | https://github.com/gin-gonic/gin |
| beego | Web фреймворк от китайских разработчиков | https://github.com/beego/beego |
| iris | Web фреймворк, претендующий на звание самого быстрого | https://github.com/kataras/iris |
| echo | Минималистичный высокопроизводительный web фреймворк | https://github.com/labstack/echo |
| goji | Лаконичный web фреймворк | https://github.com/zenazn/goji |
| revel | Высокодоступный full-stack web фреймворк | https://github.com/revel/revel |
| buffalo | Web фреймворк для простого создания full-stack проектов | https://github.com/gobuffalo/buffalo |
| hertz | Микросервисный HTTP фреймворк с высокой производительностью и расширяемостью (open source от ByteDance) | https://github.com/cloudwego/hertz |
| dotweb | Простой микро web фреймворк | https://github.com/devfeel/dotweb |
| fiber | Web фреймворк в стиле Node.js Express | https://github.com/gofiber/fiber |
ORM
| Название | Описание | Репозиторий |
|---|---|---|
| gorm | ORM библиотека, дружественная к разработчикам | https://github.com/go-gorm/gorm |
| xorm | Простая и мощная ORM | https://gitea.com/xorm/xorm |
| ent | ORM с открытым исходным кодом от FaceBook | https://github.com/ent/ent |
| sqlx | Мощное расширение библиотеки sql | https://github.com/jmoiron/sqlx |
| beego/orm | ORM, входящая в состав beego | https://github.com/astaxie/beego/tree/master/orm |
| rel | Расширяемая современная ORM | https://github.com/go-rel/rel |
| bun | SQL-ориентированная ORM | https://github.com/uptrace/bun |
Микросервисные фреймворки
| Название | Описание | Репозиторий |
|---|---|---|
| kratos | Cloud-native микросервисный фреймворк (open source от Bilibili) | https://github.com/go-kratos/kratos |
| go-kit | Библиотека инструментов для разработки микросервисов | https://github.com/go-kit/kit |
| kitex | Высокопроизводительный и расширяемый микросервисный фреймворк (open source от ByteDance) | https://github.com/cloudwego/kitex |
| go-zero | Cloud-native микросервисный фреймворк (open source от Qiniu Cloud) | https://github.com/zeromicro/go-zero |
| go-micro | Зарубежный микросервисный фреймворк | https://github.com/go-micro/go-micro |
| kite | Микросервисный фреймворк (давно не обновлялся) | https://github.com/koding/kite |
| dubbo-go | Реализация java dubbo на go (open source от Alibaba) | https://github.com/apache/dubbo-go |
| tarsgo | Реализация tars на go (open source от Tencent) | https://github.com/TarsCloud/TarsGo |
| juptiers | Микросервисный фреймворк, ориентированный на управление (open source от Douyu) | https://github.com/douyu/jupiter |
| redsync | Распределённая блокировка redis | https://github.com/go-redsync/redsync |
Интересный факт
Jupiter от Douyu — это имя Зевса, бога богов, а Kratos от Bilibili — это имя Кратоса, бога войны, который позже убил Зевса, бога богов.
Компоненты логирования
| Название | Описание | Репозиторий |
|---|---|---|
| logrus | Библиотека структурированного логирования | https://github.com/sirupsen/logrus |
| zap | Высокопроизводительная библиотека логирования с открытым исходным кодом от Uber | https://github.com/uber-go/zap |
| glog | Многоуровневое логирование | https://github.com/golang/glog |
| zerolog | JSON логирование без выделения памяти | https://github.com/rs/zerolog |
| apex/log | Библиотека структурированного логирования | https://github.com/apex/log |
| lumberjack | Библиотека ротации логов, поддерживает разделение по размеру, дате, сжатие файлов | https://github.com/natefinch/lumberjack |
Компоненты тестирования
| Название | Описание | Репозиторий |
|---|---|---|
| testify | Самый популярный пакет инструментов тестирования | https://github.com/stretchr/testify |
| ginkgo | Современный фреймворк тестирования | https://github.com/onsi/ginkgo |
| ramsql | SQL движок в памяти, в основном для модульного тестирования SQL | https://github.com/proullon/ramsql |
| go-sqlmock | SQL Mock для тестирования | https://github.com/DATA-DOG/go-sqlmock |
| goconvey | Визуальное тестирование в браузере | https://github.com/smartystreets/goconvey |
| go-stress-testing | Инструмент нагрузочного тестирования | https://github.com/link1st/go-stress-testing |
| xgo | Фреймворк stub-тестирования go, реализованный через переписывание кода во время компиляции | https://github.com/xhd2015/xgo |
| gomonkey | Фреймворк stub-тестирования go, реализованный через изменение адреса функции | https://github.com/agiledragon/gomonkey |
Обработка данных
| Название | Описание | Репозиторий |
|---|---|---|
| mapstructure | Преобразование map в структуру и обратно | https://github.com/mitchellh/mapstructure |
| cast | Удобное преобразование типов данных | https://github.com/spf13/cast |
| deepcopy | Глубокое копирование | https://github.com/mohae/deepcopy |
| copier | Копирование значений между одноимёнными полями структур | https://github.com/jinzhu/copier |
| go-pinyin | Преобразование китайских иероглифов в пиньинь | https://github.com/mozillazg/go-pinyin |
| go-streams | Потоковая обработка данных | https://github.com/reugn/go-streams |
| stream | Потоковая обработка | https://github.com/xyctruth/stream |
| go-humanize | Преобразование данных в читаемый для человека формат | https://github.com/dustin/go-humanize |
| uniseg | Сегментация Unicode текста, перенос слов и расчёт ширины строк в Go | https://github.com/rivo/uniseg |
Валидация данных
| Название | Описание | Репозиторий |
|---|---|---|
| go-playground/validator/v10 | Валидатор данных | https://github.com/go-playground/validator |
| go-cmp | Библиотека для сравнения значений с открытым исходным кодом от Google | https://github.com/google/go-cmp |
| ozzo-validation | Библиотека валидации данных на основе правил | https://github.com/go-ozzo/ozzo-validation |
| go-tagexpr | Библиотека валидации тегов структур | https://github.com/bytedance/go-tagexpr |
Структуры данных
| Название | Описание | Репозиторий |
|---|---|---|
| gods | Реализация распространённых структур данных | https://github.com/emirpasic/gods |
| go-datastructures | Реализация распространённых структур данных | https://github.com/Workiva/go-datastructures |
| biset | Реализация bitsets в go | https://github.com/bits-and-blooms/bitset |
| bloom | Реализация bloom filters в go | https://github.com/bits-and-blooms/bloom |
| deque | Реализация высокопроизводительной двусторонней очереди | https://github.com/edwingeng/deque |
| concurrent-map | Потокобезопасная реализация сегментированной map | https://github.com/orcaman/concurrent-map |
| samber/lo | Библиотека обработки данных в стиле Lodash, поддерживает дженерики | https://github.com/samber/lo |
| google/btree | Библиотека BTree от Google, поддерживает дженерики | https://github.com/google/btree |
| gostl | Библиотека структур данных как C++ STL | https://github.com/liyue201/gostl |
Математические вычисления
| Название | Описание | Репозиторий |
|---|---|---|
| gonum | Аналог numpy | https://github.com/gonum/gonum |
| decimal | Библиотека для работы с числами высокой точности | https://github.com/shopspring/decimal |
| crunch | Библиотека для упрощения операций с байтами и битами | https://github.com/superwhiskers/crunch |
| math-engine | Библиотека движка парсинга и вычисления математических выражений | https://github.com/dengsgo/math-engine |
Шаблонизаторы
| Название | Описание | Репозиторий |
|---|---|---|
| pongo2 | Шаблонизатор в стиле Django | https://github.com/flosch/pongo2 |
| ace | HTML шаблонизатор | https://github.com/yosssi/ace |
| mustache | Реализация mustache на go | https://github.com/hoisie/mustache |
| hero | Мощный, быстрый шаблонизатор | https://github.com/shiyanhui/hero |
| quictemplate | Как следует из названия, высокопроизводительный шаблонизатор | https://github.com/valyala/quicktemplate |
| amber | Шаблонизатор на основе HAML и Jade | https://github.com/eknkc/amber |
Компоненты кэширования
| Название | Описание | Репозиторий |
|---|---|---|
| golang-lru | Потокобезопасный LRU, а также LRU 2Q кэш | https://github.com/hashicorp/golang-lru |
| ttlcache | Кэш в памяти, поддерживает TTL, дженерики | https://github.com/jellydator/ttlcache |
| gocache | Менеджер промежуточного ПО кэширования | https://github.com/eko/gocache |
| go-cache | Кэш в памяти, подходит для автономных приложений, поддерживает TTL | https://github.com/patrickmn/go-cache |
| ristretto | Высокопроизводительный кэш в памяти | https://github.com/dgraph-io/ristretto |
| bigcache | Эффективный кэш больших ключей в памяти | https://github.com/allegro/bigcache |
Базы данных и драйверы
| Название | Описание | Репозиторий |
|---|---|---|
| modernc.org/sqlite | Драйвер sqlite, написан на чистом go, не требует cgo | https://gitlab.com/cznic/sqlite |
| mattn/go-sqlite3 | Драйвер sqlite, требует cgo | https://github.com/mattn/go-sqlite3 |
| denisenkom/go-mssqldb | Драйвер sqlserver, редко обновляется, рекомендуется использовать версию от Microsoft | https://github.com/denisenkom/go-mssqldb |
| microsoft/go-mssqldb | Драйвер sqlserver, новый форк от Microsoft | https://github.com/microsoft/go-mssqldb |
| pgx | Драйвер postgreSQL | https://github.com/jackc/pgx/ |
| mysql | Драйвер mysql | https://github.com/go-sql-driver/mysql |
| oci-go-sdk | Официальный драйвер oracle | https://github.com/oracle/oci-go-sdk |
| go-ora | Драйвер oracle, написан на чистом go | https://github.com/sijms/go-ora |
| badger | Встраиваемая kv база данных на основе LSM | https://github.com/dgraph-io/badger |
| boltdb | Встраиваемая kv база данных на основе B+Tree | https://github.com/boltdb/bolt |
| goleveldb | Реализация leveldb на go | https://github.com/syndtr/goleveldb |
| qmgo | Библиотека для работы с mongodb от Qiniu Cloud | https://github.com/qiniu/qmgo |
| mongo-go-driver | Официальный go драйвер mongodb | https://github.com/mongodb/mongo-go-driver |
| rqlite | Лёгкая распределённая реляционная база данных на основе sqlite | https://github.com/rqlite/rqlite/ |
| go-mysql | Мощный набор инструментов MySQL | https://github.com/go-mysql-org/go-mysql |
| go-mysql-elasticsearch | Инструмент синхронизации данных MySQL в Elasticsearch | https://github.com/go-mysql-org/go-mysql-elasticsearch |
| gofound | Автономный движок полнотекстового поиска на сотни миллионов записей, | https://github.com/sea-team/gofound |
| bleve | Библиотека полнотекстового поиска | https://github.com/blevesearch/bleve |
Сериализация
| Название | Описание | Репозиторий |
|---|---|---|
| go-ini | Библиотека сериализации ini файлов | https://github.com/go-ini/ini |
| sonic | Высокопроизводительная библиотека json сериализации с открытым исходным кодом от ByteDance | https://github.com/bytedance/sonic |
| easyjson | Библиотека быстрой json сериализации | https://github.com/mailru/easyjson |
| gjson | Быстрое получение значений json ключей, не традиционная библиотека сериализации | https://github.com/tidwall/gjson |
| go-yaml | Библиотека yaml сериализации | https://github.com/go-yaml/yaml |
| go-toml | Библиотека toml сериализации | https://github.com/pelletier/go-toml |
| properties | Библиотека properties сериализации | https://github.com/magiconair/properties |
| viper | Поддержка сериализации нескольких форматов данных, также является менеджером конфигурации | https://github.com/spf13/viper |
| configor | Сериализатор нескольких форматов данных от автора gorm, менеджер конфигурации | https://github.com/jinzhu/configor |
Командная строка
| Название | Описание | Репозиторий |
|---|---|---|
| pflag | Пакет flag в стиле POSIX/GNU | https://github.com/spf13/pflag |
| go-flags | Парсер аргументов командной строки | https://github.com/jessevdk/go-flags |
| cobra | Скаффолдинг для современных CLI программ | https://github.com/spf13/cobra |
| dimiro1/banner | Библиотека для создания красивых баннеров | https://github.com/dimiro1/banner |
| go-pretty | Красивый вывод таблиц, текста, прогресс-баров в командной строке | https://github.com/jedib0t/go-pretty |
| progressbar | Потокобезопасный прогресс-бар для командной строки | https://github.com/schollz/progressbar |
| go-ansi | Портативная утилита ANSI escape-последовательностей для Windows на Go | https://github.com/k0kubun/go-ansi |
| go-isatty | Библиотека для определения tty | https://github.com/mattn/go-isatty |
Архивация и сжатие
| Название | Описание | Репозиторий |
|---|---|---|
| klauspost/compress | Оптимизированная версия стандартной библиотеки compress | https://github.com/klauspost/compress |
| alexmullins/zip | Форк стандартной библиотеки archive/zip, поддерживает пароль | https://github.com/alexmullins/zip |
| mholt/archiver | Библиотека инструментов архивации и сжатия, поддерживающая множество форматов (настоятельно рекомендуется) | https://github.com/mholt/archiver |
| go-car | Реализация CAR архивов на go | https://github.com/ipld/go-car |
| go-unarr | Библиотека архивации и сжатия | https://github.com/gen2brain/go-unarr |
| xz | Чистая Golang библиотека для чтения и записи xz архивов | https://github.com/ulikunitz/xz |
Дата и время
| Название | Описание | Репозиторий |
|---|---|---|
| carbon | Библиотека обработки даты и времени | https://github.com/golang-module/carbon |
| robfig/cron | Библиотека для периодических задач | https://pkg.go.dev/github.com/robfig/cron/v3 |
| gron | Библиотека для периодических задач | https://github.com/roylee0704/gron |
| jobrunner | Фреймворк асинхронных периодических задач | https://github.com/bamzi/jobrunner |
| dataparse | Парсинг строк времени без знания формата | https://github.com/araddon/dateparse |
| jinzhu/now | Библиотека утилит для работы с датами | https://github.com/jinzhu/now |
Внедрение зависимостей
| Название | Описание | Репозиторий |
|---|---|---|
| dig | Библиотека внедрения зависимостей с открытым исходным кодом от Uber, основана на рефлексии | https://darjun.github.io/2020/02/22/godailylib/dig/ |
| wire | Библиотека внедрения зависимостей с открытым исходным кодом от Google, основана на генерации кода | https://github.com/google/wire |
| inject | Инструмент внедрения зависимостей | https://github.com/codegangsta/inject |
| di | Контейнер внедрения зависимостей | https://github.com/sarulabs/di |
Геолокация
| Название | Описание | Репозиторий |
|---|---|---|
| geoip2-golang | IP в геолокацию | https://github.com/oschwald/geoip2-golang |
| ip2location-go | IP в геолокацию | https://github.com/ip2location/ip2location-go |
Фреймворки для краулинга
| Название | Описание | Репозиторий |
|---|---|---|
| colly | Простой и мощный фреймворк для краулинга | https://github.com/gocolly/colly |
| goquery | Аналог j-thing | https://github.com/PuerkitoBio/goquery |
Сетевые инструменты
| Название | Описание | Репозиторий |
|---|---|---|
| gentleman | Плагино-ориентированный, расширяемый http клиент | https://github.com/h2non/gentleman |
| resty | RESTful http клиент | https://pkg.go.dev/github.com/go-resty/resty/v2 |
| gopeed | Современный менеджер загрузок для всех платформ, основан на go и flutter | https://github.com/GopeedLab/gopeed |
Электронная почта
| Название | Описание | Репозиторий |
|---|---|---|
| jordan-wright/email | Надёжная и гибкая библиотека отправки почты | https://github.com/jordan-wright/email |
| gomail | Библиотека отправки почты | https://github.com/go-gomail/gomail |
| go-simple-mail | Простая библиотека отправки почты | https://github.com/xhit/go-simple-mail |
| go-mail | Простая в использовании, комплексная библиотека отправки почты | https://github.com/wneessen/go-mail |
| email-verifier | Проверка валидности email без отправки письма | https://github.com/AfterShip/email-verifier |
| maddy | Комбинированный почтовый сервер | https://github.com/foxcpp/maddy |
| mox | Полностью open source, высокоподдерживаемый, самохостящийся почтовый сервер | https://github.com/mjl-/mox |
| hermes | Библиотека генерации email шаблонов | https://github.com/matcornic/hermes |
| listmonk | Высокопроизводительный, самохостящийся, визуальный менеджер почтовых списков | https://github.com/knadh/listmonk |
| go-smtp | SMTP клиент и сервер на go | https://github.com/emersion/go-smtp |
| go-imap | IMAP клиент и сервер на go | https://github.com/emersion/go-imap |
Разработка игр
| Название | Описание | Репозиторий |
|---|---|---|
| ebitengine | Очень простой 2D игровой движок | https://github.com/hajimehoshi/ebiten |
| Azul3D | 3D игровой движок на go | https://github.com/azul3d/engine |
| engo | Open source 2D игровой движок на go | https://github.com/EngoEngine/engo |
| g3n/engine | 3D игровой движок go | https://github.com/g3n/engine |
| gonet | Фреймворк игрового сервера | https://github.com/xtaci/gonet |
| leaf | Фреймворк игрового сервера | https://github.com/name5566/leaf |
| cloud-game | Облачный игровой сервис на основе web | https://github.com/giongto35/cloud-game |
GUI
| Название | Описание | Репозиторий |
|---|---|---|
| fyne | Кроссплатформенный инструментарий GUI разработки (действительно стоящий) | https://github.com/fyne-io/fyne |
| go-flutter | Написание Flutter на go | https://github.com/go-flutter-desktop/go-flutter |
| Wails | Можно рассматривать как быструю и лёгкую альтернативу Electron для Go | https://github.com/wailsapp/wails |
Взаимодействие с системой
| Название | Описание | Репозиторий |
|---|---|---|
| gopsutil | Получение информации об ОС, совместим с основными системами | https://github.com/shirou/gopsutil |
| flock | Файловая блокировка на основе системных вызовов | https://github.com/gofrs/flock |
| sys | Официальная библиотека взаимодействия с ОС | https://cs.opensource.google/go/x/sys |
Межъязыковое взаимодействие
| Название | Описание | Репозиторий |
|---|---|---|
| gopher-lua | Lua виртуальная машина на go | https://github.com/yuin/gopher-lua |
| go-lua | Lua виртуальная машина на go | https://github.com/Shopify/go-lua |
| goja | Поддержка ES5.1+ | https://github.com/dop251/goja |
| tengo | Tengo — небольшой, динамичный, быстрый, безопасный скриптовый язык на Go | https://github.com/d5/tengo |
| goby | Интерпретируемый скриптовый язык на go, вдохновлённый ruby | https://github.com/goby-lang/goby |
| go+ | Скриптовый язык с открытым исходным кодом от Qiniu Cloud, бесшовно взаимодействует с go, также называется Q язык | https://github.com/goplus/gop |
| go-python | Вызов cpython2 из go | https://github.com/sbinet/go-python |
| go-pytyon3 | Вызов cpython3 из go | https://github.com/DataDog/go-python3 |
Обработка изображений
| Название | Описание | Репозиторий |
|---|---|---|
| plot | Библиотека построения графиков, в основном для визуализации данных | https://github.com/gonum/plot |
| gg | 2D библиотека рисования | https://github.com/fogleman/gg |
| gocv | Поддержка OpenCV4+ | https://github.com/hybridgroup/gocv |
| imaging | Простая библиотека обработки изображений | https://github.com/disintegration/imaging |
Обработка текста
| Название | Описание | Репозиторий |
|---|---|---|
| vale | Инструмент грамматической коррекции текста | https://github.com/errata-ai/vale |
Аутентификация и авторизация
| Название | Описание | Репозиторий |
|---|---|---|
| casbin | Гибкая и мощная библиотека управления правами | https://github.com/casbin/casbin |
| openfga | Высокопроизводительная библиотека прав/авторизации, основана на Google Zanzibar | https://github.com/openfga/openfga |
Генерация кода
| Название | Описание | Репозиторий |
|---|---|---|
| jennifer | Библиотека генерации кода | https://github.com/dave/jennifer |
Обработка регулярных выражений
| Название | Описание | Репозиторий |
|---|---|---|
| commonregx | Библиотека с коллекцией часто используемых регулярных выражений | https://github.com/mingrammer/commonregex |
Обработка файлов
| Название | Описание | Репозиторий |
|---|---|---|
| filebox | Библиотека инструментов работы с файлами | https://github.com/dstgo/filebox |
| size | Быстрое преобразование между размером файла и строкой | https://github.com/dstgo/size |
| checksum | Библиотека для вычисления хеш-сигнатур файлов | https://github.com/codingsince1985/checksum |
| pdfcpu | PDF процессор | https://github.com/pdfcpu/pdfcpu |
| unioffice | Библиотека обработки Office | https://github.com/unidoc/unioffice |
| gooxml | Библиотека обработки Office | https://github.com/carmel/gooxml |
| pdfcpu | Библиотека обработки PDF | https://github.com/pdfcpu/pdfcpu |
| excelize | Библиотека обработки Excel | https://github.com/360EntSecGroup-Skylar/excelize |
Общие инструменты
| Название | Описание | Репозиторий |
|---|---|---|
| lancet | Многофункциональная библиотека инструментов, аналогично пакету common в java | https://github.com/duke-git/lancet |
| bytebufferpool | Пул байтовых буферов | https://github.com/valyala/bytebufferpool |
Фреймворки разработки
| Название | Описание | Репозиторий |
|---|---|---|
| goframe | Современный корпоративный фреймворк разработки go | https://github.com/gogf/gf |
Протоколы консенсуса
| Название | Описание | Репозиторий |
|---|---|---|
| hashicorp/raft | Библиотека raft с открытым исходным кодом от consul | https://github.com/hashicorp/raft |
| hashicorp/memberlist | Библиотека gossip с открытым исходным кодом от consul | https://github.com/hashicorp/memberlist |
| etcd-io/raft | Библиотека raft с открытым исходным кодом от etcd | https://github.com/etcd-io/raft |
OCR
| Название | Описание | Репозиторий |
|---|---|---|
| gosseract | Библиотека OCR с использованием Tesseract C++ | https://github.com/otiai10/gosseract |
