Полезные библиотеки
- viper Чтение и сохранение конфигурации в различных форматах.
- Работа с командной строкой: создание флагов командной строки в POSIX формате, автоматическая генерация “как использовать”.
- Kingpin - ещё одна реализация работы с флагами. Godoc.
- Flaggy. Также работа с командной, возможность создания подкоманд. Godoc.
- Go-Config. Позволяет собирать конфигурацию из различных источников (файлы, командная строка и т.д.). Godoc. Описание в блоге.
- Gonfig - позволяет читать конфигурацию из json и переменных окружения.
- Venom. Также позволяет конфигурировать из различных источников. GoDoc.
- Реализация формата HOCON configuration. GoDoc.
- Yaml - работа с YAML от Canonical. API. Blog.
- promptui - позволяет запрашивать у пользователя информацию в процессе работает. Интегрируется, например с cobra и другими подобными библиотеками. GoDoc.
- cli - ещё одна библиотека для расширения флагов командной строки. GoDoc.
- koanf - позиционируется как более легковесный конкурент viper.
- Библиотека от Google Glog. Документация.
- Библиотека от juju Loggo. Документация.
- Библиотека от Uber Zap. Документация.
- Logrus. Наверное наиболее популярный. Используется в Docker. API.
- Вроде как самая маленькая библиотека go-logging. API.
- zerolog - логирование в формате json. GoDoc. Также может логировать в нормальном виде.
- go-spew - красивый вывод в консоль данных для отладки. GoDoc.
- httpretty - удобное логирование в консоль http запросов как на сервере, так и на клиенте. GoDoc.
- zlog - логер позволяет скрывать чувствительную информацию из логирования. GoDoc.
- Log - простенький логер с подсветкой вывода от создателей Bubble Tea. GoDoc.
Отличная статья с обзором разных библиотек для написания text-based GUI.
- Пользовательский интерфейс в терминале (https://github.com/nsf/termbox-go).
- Ещё одна реализация (https://github.com/gdamore/tcell). Почти полностью совместима с termbox-go.
- gocui. Godoc.
- TermUI. Документация.
- Bubble Tea - от создателей Glow.
- Box CLI Maker - позволяет создавать приветственные окна.
- Реализация node.js socket (https://github.com/googollee/go-socket.io). Полезно при использовании electron в качестве UI.
- Библиотека для написания GUI на Electron (https://github.com/asticode/go-astilectron).
- Walk. Библиотека позволяет писать GUI под Windows. Является обёрткой над win32 API.
- duit. Развивающаяся библиотека. Кроссплатформенная. Вводная информация.
- WebView - вызов встроенного в GUI операционки просмотрщика HTML. Кросплатформенный. GoDoc.
- QT(https://github.com/therecipe/qt) - биндинг QT для Go. Wiki.
- WUI(https://github.com/gonutz/wui) - позволяет создавать простые GUI в Windows. GoDoc.
- Systray - позволяет выводить информацию в tray.
- Gio - пилит чувак из Google. Надо следить. Основной сайт gioui. Статья на Хабре.
- Gi - ещё один framework, но зависит от cgo.
- fyne - кроссплатформенная библиотека. Под виндой собралась. GoDoc. Документация на сайте разработчика.
- giu - обёртка над Dear ImGui. Поддерживает lua. GoDoc.
- govcl - биндинг над графической библиотекой lazurus. Мне кажется очень перспективная. README.
- pix - какая-то минималистическая библиотека. GoDoc.
- Cogent Core - написание GUI с использование Wasp. На всех платформах. GitHub.
- go-pretty - упрощает вывод текста, таблиц, списков в консоль. Progressbar. GoDoc
- gchalk - позволяет выводить в консоль разноцветный текст. GoDoc.
- PTerm - ещё одна реализация цветного терминала. Очень прикольный. GitHub.
- lipgloss - ещё одна библиотека для создания интерфсов в терминале.
- Анимация в командной строке Wow.
- progressbar от автора croc. GoDoc.
- color - позволяет раскрашивать вывод в консоль. GoDoc.
- ishell - библиотека позволяет создавать интерактивные консольные приложения.
- sqlx. Работа с данными как со структурами.
- sqlboiler. Ещё одна библиотека для генерации данных на основании схемы. Документация.
- Драйвер для MS SQL (https://github.com/denisenkom/go-mssqldb).
- Bolt (embeded key/value база данных) (https://github.com/boltdb/bolt) (например, используется в InfluxDB).
- Список проектов, использующих bolt. Среди них много интересных.
- Budger.
- Драйвер для sqllite (https://github.com/mattn/go-sqlite3)
- ql - embedded SQL database. GoDoc.
- Gorm - ORM для Go. Github. GoDoc. Docs.
- go-sqlbuilder - постритель запросов к базе. GoDoc.
- squirrel - sql генератор. GoDoc.
- go-memdb - база в памяти, близка к Redis. поддерживает транзакции.
- sqlite - реализация sqlite на чистом Go. GoDoc.
- jsoniter.
- Проекты Tidwall
- fastjson. Библиотека от создателя fasthttp. API.
- gojsonq A simple Go package to Query over JSON/YAML/XML/CSV Data. GoDoc.
- easyjson - серилизатор без reflection от mail.ru.
- hujson - HumanJson - позволяет парсить json с комментариями и запятыми после последнего элемента. GoDoc.
- go-json - очередной быстрый заменитель стандартной библиотеки.
- sonic - библиотека от создателей Tik-Tok. Используют ассемблер. GoDoc.
- Bdd test framework ginkgo. GitHub.
- gomega - библиотека для сравнения, интегрируется с ginkgo.
- goblin - ещё один BDD.
- Godoc. Пакет для создание и запуска тестов на Cucumber в Go.
- Testify - библиотека по принципу *unit. Добавляет методы assert.
- GoConvey. Github.
- RobotGo - позволяет управлять GUI из Go.GoDoc. ApiDoc.
- Rapid - property-based тестирование. GoDoc.
- go-cmp - библиотека для сравнения значений двух структур. GoDoc.
- quicktest - набор удобных методов.
- chromedr - реализация Chrome driver API на Go. GoDoc.
- gocheck - конкурент testify.
- Fake. Библиотека для генерации различных данных на русском и английском языках. GoDoc.
- Faker - ещё одна библиотека. GoDoc.
- gofakeit - тоже для генерации данных.
- templ - написание html шаблонов на Go. Документация.
- fasthttp - на сегодняшний момент самая быстрая реализация http сервера на Go. API
- resty - rest-client, позволяющий удобно делать запросы и разбирать ответы. Автоматически измеряет время ответа от сервера. GoDoc.
- quic-go - реализация протокола quic на Go.
- Gorilla web toolkit. Небольшая вводная.
- Revel. Framework типа Grails для Go.
- Компилятор Go в JS GopherJs.
- GoWebApp - MVC web application на Go. Blue Jay - Blueprint - Более продвинутая реализация.
- Framework macaron. Документация. Github.
- hutplate - надстройка над http для облегчения авторизации, сессионностии прочее.
- Bufallo - ещё один web-framewrok. Документация. Github.
- Beego web-framework. Github. Godoc.
- quicktemplate - замена работы с шаблонами в Go. Похожа на работу с Jsp в Java. API.
- gramework - от создателя fasthttp.
- chi - простой легковесный роутер как Gorilla, только легче и идеоматичней. Godoc.
- echo - легковесный web-framework.
- Gin - вроде как шустрый web-framework. Офицальный сайт. GoDoc.
- authboss - библиотека для аутентификации, авторизации. GoDoc.
- sessionup - позволяет управлять сессиями. GoDoc
- Secure - прослойка позволяет настраивать некоторую безопасность для web-приложений. GoDoc.
- nosurf - помогает осущесвлять проверку безопасности для web-серверов. GoDoc.
- go-kit - набор для создания микросервисов. GitHub.
- webrtc - реализация WebRTC на GO.
- goa - библиотека позволяет быстро создавать api и микросервисы. Имеет свой DSL для описания. GitHub.
- go-app - ещё один интересный проект написания progressive web apps (PWA). С декларативным синтаксисом. GitHub.
- ldpap - реализация LDAP 3 на GO.
- Zepto - обещают легковесный framework в Go-стиле.
- GopherJS - компилятор из go в JS. GoDoc.
- flogo - framework для создания микро-сервисов. GitHub.
- bud - очередной мощный фреймворк для создания сайтов. Пока требует node.js. Будем наблюдать.
- GoVisual - визуализатор HTTP-запросов для отладки и проверки локально web-приложений.
- Evio - работа с сетью, основанная на событиях.
- Noise. Библиотека, позволяющая писать децентрализованные P2P приложения. Godoc.
- limiter - библиотека для разных ограничений в сети, типа количества запросов в секунду.
- GoPacket - библиотека для работы с сетевыми пакетами от Google. GoDoc.
- Dateparse - библиотека для парсинга строк, представляющих из себя различные форматы дат. Документация.
- GoAWK - реализация парсера языка AWK на Go. Есть возможность использовать прямо внутри Go. GoDoc.
- Expr - позволяет парсить различные выражаения, в том числе и математические. GitHub. GoDoc.
- govaluate - парсер математических и логических выражений. Позволяет писать свои функции. GoDoc.
- Now - библиотека расширяет некоторые методы для работы с датой. Документация.
- cron - реализация cron на GO. GoDoc.
- when - парсер времени с натурального языка.
Информация взята отсюда.
Пакет | Пример | Описание формата |
---|---|---|
ksuid | 0pPKHjWprnVxGH7dEsAoXX2YQvU | 4 bytes of time (seconds) # 16 random bytes |
xid | b50vl5e54p1000fo3gh0 | 4 bytes of time (seconds) # 3 byte machine id # 2 byte process id # 3 bytes random |
betterguid | -Kmdih_fs4ZZccpx2Hl1 | 8 bytes of time (milliseconds) # 9 random bytes |
sonyflake | 20f8707d6000108 | ~6 bytes of time (10 ms) # 1 byte sequence # 2 bytes machine id |
ulid | 01BJMVNPBBZC3E36FJTGVF0C4S | 6 bytes of time (milliseconds) # 8 bytes random |
sid | 1JADkqpWxPx-4qaWY47~FqI | 8 bytes of time (ns) # 8 random bytes |
go.uuid | 5b52d72c-82b3-4f8e-beb5-437a974842c | UUIDv4 from RFC 4112 for comparison |
uuid | UUIDs based on RFC 4122 |
- Gobot
Библиотека позволяет программировать различные устройства. Репозиторий на Guthub. Документация. - Emgo
Позволяет писать микропрограммы для ARM Cortex-M based MCUs. Репозиторий на Github. Блог как это всё работает. - Periph от команды google GitHub. GoDoc.
- Tinygo GitHub.
- TamaGo - bare metal Go for ARM SoCs . Позволяет писать на GO для голых чипов AMD.
- ghw - Golang HardWare discovery/inspection library. Позволяет получать информацию о конфигурации оборудовании, текущем состоянии.
- Go-Set - набор разных типов коллекций и операций с ними. GoDoc.
- Enumer - генератор для enum.
- concurrent-map - конкурентная мапа.
- Ebiten. Позволяет писать двухмерные игры. Godoc. Краткая справка. GitHub.
- Prototype. Простая библиотека для работы с канвой. GoDoc.
- Библиотека для написания игр pixel.
- Physix.go - реализация физики. Можно использовать совместно с Ebiten.
- Draw2d - библиотека для вывода графики. Godoc.
- Gg - визуализация двухмерной графики. Godoc.
- colorgrad - позволяет делать градиенты, шкалы цветов и всё такое. GoDoc.
- generativeart - позволяет создавать абстрактные рисунки.
- imaging - изменение изображений - изменение масштаба, поворот и т.д.
- Goavatar - библиотека для генерации аватарки на основании строки.
- Go Fluent FFmpeg - wrapper для ffmpeg. Позволяет работать с видеофайлами из программы на Go. GoDoc.
- Tachymeter - подсчёт статистики с выводом в виде json, histogram и в консоль. GoDoc.
- Gonum - мощная библиотека для различной математики и статистики. Github. GoDoc.
- decimal - работа с числами с заданной точностью. GoDoc.
- Machinery обработка сообщений. Работа с различными источниками. Godoc.
- Bigslice - аналог Spark на Go. GitHub. GoDoc.
- watermill - работа с сообщениями. Возможность интегрироваться с Kafka, RabbitMQ.
- Sarama - наверное самый популярный клиент для работы с kafka.
- franz-go - альтерантивный клиент для работы с Kafka.
- Интерпретатор GO Yaegi. Введение. GoDoc. Работает как библиотека, так и как приложение командной строки. Позволяет парсить и запускать код на Go.
- ristretto - конкурентный кеш. Описание в блоге. Godoc.
- olric - распределённый in-memory кеш, ключ-значение. GoDoc.
- esc - встраивает файлы в бинарник, при этом их сжимая. GoDoc.
- Rice - упаковка ресурсов в исполняемый файл. GoDoc.
- packr -создан на основе rice, но улучшен. GoDoc.
- statik - чем-то похож на esc. GoDoc.
- broccoli - встраивает и сжимает ресурсы в бинарник. GoDoc.
- binclude - тоже умеет сжимать. Обращение к ерсурсам практически также, как и к ресурсам системы. GoDoc.
- Goweight - анализ размера используемых пакетов.
- Go binary size SVG treemap - также рисует содержимое бинарника в виде treemap.
- go-mod-outdated (go-mod-outdated) - анализ устаревших пакетов в зависимостях.
- Spaghetti - анализ зависимостей в браузере.
- Go binary size SVG treemap - рисует SVG карту библиотек в бинарнике. Примерно как Goweight.
- ExpvarMon - библиотека позволяет мониторить в консоли программу на Go.
- fgprof - мониторинг загрузки процессора. Достаточно простой и наглядный. GoDoc.
- statviz - рисует разные графики в runtime.
- gocv - библиотека для работы с OpenCv из Go. GitHub.
- Работа с открытой библиотека OpenCV - wrapper для OpenCv на Go.
- GoCV - ещё один wrapper. Поддерживает cuda.
- excelize - работа с excel файлами из Go. Документация. GoDoc.
- Runner для goroutines. Позволяет легко управлять запущенными goroutines.
- ants. Позволяет создавать с пулом goroutings. GoDoc.
- Управление gouroutines Run. Godoc.
- tunny - создание пулов gorouting. Похоже как в джаве сделаны Executors. GoDoc.
- goleak - поиск утечек в рутинах.
- Conc - ещё одна реализация часто встречающихся операций с потоками. Пулы, параллельная работа с мапами и т.д.
- age -библиотека для семмитричного и ассиметриченого шифрования. Может использоватся как отдельная утилита GoDoc.
- Колокол - простая библиотека для работы с событиями. Статья от авторов на Хабре.
- RxGo - одна из самых популярных библиотек для работы на событиях.
- Распознавание естественных языков.
- Фильтрация строк из ридера как в Groovy и Unix. Документация.
- linq, как в C# в Go. Документация.
- Множество библиотек для web.
- Etree. Библиотека для работы с XML.
- Рисование графиков
- Список проектов для работы с железом.
- Reducemap на Go gleam. Анализ данных.
- Паук для web Colly. Документация.
- Работа с клавиатурой keyboard.
- Глобальных перехват Ctrl+C и прочих прерываний Goodbye. Статья от автора.
- Работа с изображениями govips.
- Клиент для elasticsearch. Запись в блоге.
- Gosec. Библиотека для сканирования исходного кода на Go и выявление проблем с безопасностью.
- Detective - мониторинг распределённых систем. GoDoc.
- Charlatan позволяет автоматически создавать заглушки для программных интерфейсов.
- Tablewriter - вывод таблиц в текстовом форматре.
- Chroma - подсветка синтаксиса. Godoc.
- Prototool от Uber. Альтернативная работа с protobuf. Godoc.
- BigMachine - библиотека для развертывания кластера. Например, работает в связке с Bigslice.
- g-locale - определение установленной локали пользователя. GoDoc.
- ASCIIGraph - вывод графиков в консоли при помощи ASCII символов. GoDoc.
- validator - проверка значений в структурах. GoDoc.
- go-humanize - позволяет переводить числа в байты, удобное время и прочее. GoDoc.
- error - набор обёрток для обработки ошибок.
- dagger - реализация графов.
- script - работа из Go c командами консоли. Возможно написание shell скриптов. Описание.