Полезные ссылки Go #1

https://flaviocopes.com/golang-data-structures/ — полное руководство по структурам данных в Go.

Тут рассматриваются ряд практических примеров, таких как:

  • Поиск по бинарному дереву (Binary Search Tree)

  • Работа со словарем (Dictionary)

  • Графовое представление (Graph)

  • Работа с хеш-таблицей (Hash Table)

  • Работа со связанным списком (Linked List)

  • Представление очередей (Queue)

  • Работа по списком наборов (Sets)

  • Работа с стеком данных (Stack)


https://micro.mu/ — это проект микросервисного фреймворка и его экосистемы.

В нем уже заложены практически все аспекты взаимодейтсвий микросервисов друг с другом — начиная от нотации их общений (gRPC, ProtoBuf, JSON и т. д.) и способов передачи сообщений друг другу (NATS, RabbitMQ и т.д.) до формата создания самих микросервисов. Это по истине уникальный фреймворк, который «из коробки» позволяет уже начать делать микросервисы на Go, не задумываясь о решении низкоуровневых задач по организации работы самих микрочервисов.


https://gokit.io/ — набор инструментов для микросервисов.

Если вы решили создать свой микросекрвис на Go-lang, но не знаете с чего начать и хотите иметь гибкость в выборе решений для своего детища, то GoKit для вас.


https://github.com/sevlyar/go-daemon — библиотека для написания системных демонов в Go.

Она поддерживает только ОС на базе UNIX (Windows не поддерживается). Но библиотека была протестирована только на Linux и OSX.


https://github.com/kardianos/service — еще одна библиотека для написания системных демонов на Go.

Службы можно устанавливать/удалять, запускать/останавливать и запускать программу как сервис (демон). В настоящее время поддерживает Windows XP +, Linux / (systemd | Upstart | SysV) и OSX / Launchd.

Еще по этой библиотеке есть пост с описанием как это все работает — http://ipengineer.net/2017/03/linux-systemd-golang-services-using-kardianos-service/


https://github.com/spf13/viper — это, пожалуй, самый навороченная либа для работы с конфигами для Go-приложения.

Viper — это полное конфигурационное решение для приложений Go, включая «12-факторные приложения» (https://habrahabr.ru/post/261171/). Он предназначен для работы внутри приложения и покрывает все потребности в конфигурировании приложения с использованием различных форматов данных.

Он поддерживает:

  • установка значений по умолчанию

  • чтение из файлов конфигурации JSON, TOML, YAML, HCL и Java

  • просмотр и повторное чтение конфигурационных файлов (необязательно)

  • чтение из переменных среды

  • чтение из удаленных систем конфигурации (etcd или Consul) и просмотр изменений

  • чтение из флагов командной строки

  • чтение из буфера


https://beego.me/ — свободно распостаняемый фреймворк для разработки и сборки ваших приложений на языке Go.

Фреймворк подойдет все, кто надумал писать сайты на GoLang. У проекта имеется хорошая русскоязычная документация.

Более детально можно почитать тут — https://beego.me/docs/intro/


https://github.com/jinzhu/gorm — пожалуй, самый известный ORM для Go-приложений.

Имеет следующие возможности:

  • Полнофункциональный ORM (почти)

  • Ассоциации (один к одному, один ко многим, многие ко многим, полиморфизм)

  • Хуки-вызовы (Before / After Create / Save / Update / Delete / Find)

  • Предварительная загрузка (eager load)

  • Поддерживает транзакции

  • Поддерживает составные первичные ключи

  • Имеет SQL построитель запросов

  • Автоматические миграции данных

  • Поддерживает логгеры

  • Расширяемый, позволяет писать плагины на основе callback-вызовов в GORM

  • Полностью покрыт автотестами

  • Дружелюбный к разработчикам


https://github.com/go-martini/martini — мощный пакет для быстрой разработки веб-приложений и сервисов на Golang.

Очень хорошо организованный HTTP-сервер с хорошей инкапсуляцией для приятного создания веб-приложений.

Имеет следующие возможности:

  • Очень прост в использовании.

  • Ненавязчивый дизайн.

  • Хорошо сочетается с другими пакетами.

  • Потрясающий роутинг и маршрутизация.

  • Модульный дизайн — легко добавлять и исключать функциональность.

  • Большое количество хороших обработчиков/middlewares, готовых к использованию.

  • Отличный набор ‘из коробки’.

  • Полностью совместим с интерфейсом http.HandlerFunc.


https://github.com/asaskevich/govalidator — хороший пакет для валидации структур данных, строк и коллекций.

Хорошо помогает при работе с валидацией структур данных. Очень похож валидатор для классов-моделей в других языках. Прост в использовании.

Оставить ответ