Полезные библиотеки

Конфигурация и всё такое


Логгирование

  • Библиотека от 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.

UI

Пользовательский интерфейс в терминале

Отличная статья с обзором разных библиотек для написания text-based GUI.

GUI


Консоль

  • go-pretty - упрощает вывод текста, таблиц, списков в консоль. Progressbar. GoDoc
  • gchalk - позволяет выводить в консоль разноцветный текст. GoDoc.
  • PTerm - ещё одна реализация цветного терминала. Очень прикольный. GitHub.
  • lipgloss - ещё одна библиотека для создания интерфсов в терминале.
  • Анимация в командной строке Wow.
  • progressbar от автора croc. GoDoc.
  • color - позволяет раскрашивать вывод в консоль. GoDoc.
  • ishell - библиотека позволяет создавать интерактивные консольные приложения.

Работа с БД


Работа с json, XML

  • jsoniter.
  • Проекты Tidwall
    • gjson. Библиотека для работы с json. Можно получать значение по пути.
    • sjson. Библиотека, противоположная gjson. Позволяет устанавливать значения по пути.
    • jj - обработка json на потоке.
  • 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.

HTML, парсинг сайтов

  • goquery - позволяет работать со страницой как Jquery только на GO. Удобно для разбора. GoDoc.

Работа с файлами


Тестирование

Генерация данных

  • Fake. Библиотека для генерации различных данных на русском и английском языках. GoDoc.
  • Faker - ещё одна библиотека. GoDoc.
  • gofakeit - тоже для генерации данных.

Шаблоны


HTTP

  • fasthttp - на сегодняшний момент самая быстрая реализация http сервера на Go. API
  • resty - rest-client, позволяющий удобно делать запросы и разбирать ответы. Автоматически измеряет время ответа от сервера. GoDoc.
  • quic-go - реализация протокола quic на Go.

WEB-приложения

  • 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. Будем наблюдать.

OpenAPI


Работа с сетью

  • 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 - парсер времени с натурального языка.

Генерация различных ID

Информация взята отсюда.

ПакетПримерОписание формата
ksuid0pPKHjWprnVxGH7dEsAoXX2YQvU4 bytes of time (seconds) # 16 random bytes
xidb50vl5e54p1000fo3gh04 bytes of time (seconds) # 3 byte machine id # 2 byte process id # 3 bytes random
betterguid-Kmdih_fs4ZZccpx2Hl18 bytes of time (milliseconds) # 9 random bytes
sonyflake20f8707d6000108~6 bytes of time (10 ms) # 1 byte sequence # 2 bytes machine id
ulid01BJMVNPBBZC3E36FJTGVF0C4S6 bytes of time (milliseconds) # 8 bytes random
sid1JADkqpWxPx-4qaWY47~FqI8 bytes of time (ns) # 8 random bytes
go.uuid5b52d72c-82b3-4f8e-beb5-437a974842cUUIDv4 from RFC 4112 for comparison
uuidUUIDs based on RFC 4122

Работа с hardware

  • 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. Позволяет получать информацию о конфигурации оборудовании, текущем состоянии.

Сетевые framework

  • TarsGo. Реализация tars протокола для Go. GoDoc.

Списки и наборы

  • Go-Set - набор разных типов коллекций и операций с ними. GoDoc.
  • Enumer - генератор для enum.
  • concurrent-map - конкурентная мапа.

Игры

  • Ebiten. Позволяет писать двухмерные игры. Godoc. Краткая справка. GitHub.
  • Prototype. Простая библиотека для работы с канвой. GoDoc.
  • Библиотека для написания игр pixel.

Графика

  • Draw2d - библиотека для вывода графики. Godoc.
  • Gg - визуализация двухмерной графики. Godoc.
  • colorgrad - позволяет делать градиенты, шкалы цветов и всё такое. GoDoc.
  • generativeart - позволяет создавать абстрактные рисунки.
  • imaging - изменение изображений - изменение масштаба, поворот и т.д.

Видео

  • 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.

Парсеры

  • Интерпретатор GO Yaegi. Введение. GoDoc. Работает как библиотека, так и как приложение командной строки. Позволяет парсить и запускать код на Go.

Коллекции


Встраивание ресурсов (теперь не актуально, так как с версии 1.6 есть встроенный механизм)

  • esc - встраивает файлы в бинарник, при этом их сжимая. GoDoc.
  • Rice - упаковка ресурсов в исполняемый файл. GoDoc.
  • packr -создан на основе rice, но улучшен. GoDoc.
  • statik - чем-то похож на esc. GoDoc.
  • broccoli - встраивает и сжимает ресурсы в бинарник. GoDoc.
  • binclude - тоже умеет сжимать. Обращение к ерсурсам практически также, как и к ресурсам системы. GoDoc.

Вспомогательные утилиты

  • Goweight - анализ размера используемых пакетов.
  • go-mod-outdated (go-mod-outdated) - анализ устаревших пакетов в зависимостях.
  • Spaghetti - анализ зависимостей в браузере.
  • Go binary size SVG treemap - рисует SVG карту библиотек в бинарнике. Примерно как Goweight.

Работа со звуком

  • beep - работа со звуком в форматах WAV, MP3, OGG, and FLAC. GoDoc.

Мониторинг

  • ExpvarMon - библиотека позволяет мониторить в консоли программу на Go.
  • fgprof - мониторинг загрузки процессора. Достаточно простой и наглядный. GoDoc.
  • statviz - рисует разные графики в runtime.

OpenCV


Офис


goroutines

  • Runner для goroutines. Позволяет легко управлять запущенными goroutines.
  • ants. Позволяет создавать с пулом goroutings. GoDoc.
  • Управление gouroutines Run. Godoc.
  • tunny - создание пулов gorouting. Похоже как в джаве сделаны Executors. GoDoc.
  • goleak - поиск утечек в рутинах.
  • Conc - ещё одна реализация часто встречающихся операций с потоками. Пулы, параллельная работа с мапами и т.д.

Шифровние

  • age -библиотека для семмитричного и ассиметриченого шифрования. Может использоватся как отдельная утилита GoDoc.

События

  • Колокол - простая библиотека для работы с событиями. Статья от авторов на Хабре.
  • RxGo - одна из самых популярных библиотек для работы на событиях.

Интеграция с другими ЯП

  • py - интеграция с Python. GoDoc.

Разное