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

Строго говоря это подборка именно для новичков в Go, и я ожидаю, что программировать на другом языке вы уже умеете 🙂. А если нет, то смело подписывайтесь, и я научу.

Идеи и описание

gRPC

Go
A high-performance, open source universal RPC framework

Любое серверное ПО скорее всего будет как-то общаться с другими сервисами. И есть протокол, который позволяет вам делать это эффективно, быстро и независимо от языка: gRPC.

gRPC (gRPC Remote Procedure Call) - это высокопроизводительный фреймворк с открытым исходным кодом, разработанный Google для создания эффективных и масштабируемых API. Он использует протокол HTTP/2 для передачи данных и позволяет определять интерфейс сервиса с помощью языка описания интерфейса (IDL) под названием Protocol Buffers, обеспечивая типизированную, эффективную и независимую от языка программирования коммуникацию между клиентом и сервером.

Ключевые плюсы

  1. Компактность: gRPC обменивается данным в бинарном формате
  2. Расширяемость: в структуры Protocol Buffers очень легко добавлять новые поля без потери совместимости с прошлыми версиями
  3. Обмен данными в реальном времени со streaming функциями

Идеи

  1. Чат в реальном времени
  2. Мультиплеерный Flappy Bird
  3. Клон сайта "миллион чекбоксов"
  4. Удалённое управление и мониторинг своего компьютера

WEB

Огромная область, в которой го очень популярен – это веб.

Для работы с базой данных вам пригодится библиотека GORM: https://github.com/go-gorm/gorm.

Захотите обновлять информацию в реальном времени, тогда выбирайте WebSocket и библиотеку gorilla/websocket: https://github.com/gorilla/websocket.

Идеи

  1. Гостевая книга а-ля "Твиттер" или "X" с обновлением записей в реальном времени
  2. Библиотека книг и сериалов
  3. Генератор форм для опросов
  4. Библиотека отзывов
  5. Личная визитница

Данные

При разработке продукта у вас всегда появляются данные, которые нужно как-то хранить, и вы, как разработчик, должны знать разные структуры данных и чем они отличаются.

Для хранения в оперативной памяти можно начать с классических хеш-таблиц, и сосредоточиться на дизайне API и способах эффективного хранения разных типов.

Для постоянного хранения можно пойти в сторону LSM деревьев.

LSM (Log-Structured Merge) деревья - это структура данных, оптимизированная для быстрой записи и эффективного хранения большого объема данных на диске. Основная идея заключается в том, что новые данные добавляются в память в виде отсортированных блоков (называемых "сегментами" или "чанками"), а затем периодически сливаются с существующими данными на диске, образуя новые, более крупные отсортированные блоки.

Идея

Key-value хранилище или in-memory кеш.