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 — хороший пакет для валидации структур данных, строк и коллекций.
Хорошо помогает при работе с валидацией структур данных. Очень похож валидатор для классов-моделей в других языках. Прост в использовании.