Если бы я был фронтом, который идет в Го, я бы сделал так:
. Выбираем проект, который будем делать (например, тиндер, но только со шлонгами)
. Для http берешь echo / gin
. Для логирования zap / zerolog
. Для конфигурации и секретов viper
. Для миграций на БД goose
. Для SQL используешь sqlx + делаешь интроспекцию через xo + компилируешь SQL запросы через sqlc
. Читаешь и повторяешь структур проекта как написано
вот здесь
. Для хелперов в тестах берешь либу testify
. Для автоматизации скриптов (npm scripts) используешь makefile
. Начинаешь писать приложение
. Ничего не получается
. Синтасически вещи смотрешь
здесь, примеры проектов
здесь
. Гуглишь (по го миллиард бесплатных видео и текстовых туториалов)
. Начинает получатся
. Разбиваешь код по пакетам
. Удивляешься что export на CamelCase (но со временем понимаешь насколько это красиво)
. Учишся явно возвращать ошибки (это как курение: сначала противно, а потом без этого никак)
. Попадаешь на первый nil pointer
. Читаешь в чем разница передачи по Pointer vs Value и как правильно объявлять тот или иной тип
. Пишешь первую goroutine
. Они не запускаются
. Читаешь про wg.WaitGroup и ctx.Context
. Создаешь первый channel
. Попадаешь в deadlock
. Учишь for, select, последовательность открытия, коммуникации и закрытия channel
. Охапка дров, backend готов