Вы когда-нибудь ловили себя на мысли, что пишете один и тот же boilerplate для микросервиса уже в десятый раз? Или тратите часы на поиск утечки горутин, хотя могли бы спросить у ИИ? Мы в ASI Biont прошли через это. За последние полгода мы внедрили промт-инжиниринг в ежедневную разработку на Go, и время выхода фич сократилось в 2,5 раза. Это не магия, а системный подход: нейросеть берёт на себя рутину, а мы фокусируемся на архитектуре и бизнес-логике.
В этой статье я собрал 12 проверенных промтов, которые реально ускоряют работу с Go — от генерации каркасов микросервисов до оптимизации под highload. Каждый промт можно скопировать и использовать сразу, а примеры показывают, как именно он применяется в бою. Погнали.
1. Генерация каркаса микросервиса
Когда нужно быстро поднять новый сервис, этот промт создаёт структуру проекта с чистой архитектурой и готовыми к использованию компонентами.
Сгенерируй структуру Go-микросервиса для REST API с использованием chi, pgx и zap.
Включи: cmd/server/main.go, internal/config, internal/handlers, internal/repository (PostgreSQL), internal/service.
Добавь graceful shutdown и чтение конфигурации из env.
Выведи полный код каждого файла.
Пример использования: Вместо 20 минут ручного создания файлов вы получаете рабочий скелет за 30 секунд. Остаётся только дописать бизнес-логику.
2. Написание тестов с моками
Тесты — это боль многих разработчиков. Этот промт генерирует unit-тесты с моками на основе интерфейса.
Напиши unit-тесты для функции GetUserByID(id int) (*User, error) в Go.
Используй testify и mock-объект для репозитория.
Покрой случаи: успешный ответ, не найден, ошибка БД.
Пример: Вы вставляете сигнатуру функции — получаете три готовых теста с моками, которые сразу можно запустить.
3. Оптимизация SQL-запросов
Медленные запросы — бич highload. Промт анализирует ваш код и предлагает оптимизации.
Вот SQL-запрос:
SELECT * FROM orders WHERE user_id = $1 AND created_at > NOW() - INTERVAL '30 days';
Как оптимизировать его для таблицы с 10 млн записей?
Предложи индексы, изменение схемы, альтернативные запросы.
Ответь на русском.
Пример: Получаете рекомендацию добавить составной индекс (user_id, created_at) и переписать запрос с покрывающим индексом.
4. Поиск утечек горутин
Утечки горутин — классика Go. Промт помогает найти проблемные места.
Проанализируй этот код на утечки горутин:
package main
import (
"fmt"
"time"
)
func main() {
for i := 0; i < 100; i++ {
go func() { time.Sleep(time.Hour) }()
}
fmt.Println("done")
}
Что не так? Как исправить?
Пример: ИИ объясняет, что горутины не завершаются, и предлагает использовать context.WithTimeout и WaitGroup.
5. Рефакторинг legacy-кода
Старый код сложно поддерживать. Промт предлагает план рефакторинга.
Вот фрагмент legacy-кода на Go. Предложи конкретные шаги рефакторинга для улучшения читаемости и тестируемости. Покажи, как разбить монолитную функцию на мелкие.
[вставьте код]
Пример: Вы вставляете 200-строчную функцию — получаете разбивку на 5 функций с пояснением, как их тестировать.
6. Написание Dockerfile
Правильный Dockerfile экономит время сборки. Промт генерирует многоступенчатую сборку.
Создай Dockerfile для Go-приложения с использованием multi-stage build.
Используй golang:1.22-alpine для сборки и alpine:3.19 для рантайма.
Включи установку CA-сертификатов и запуск от непривилегированного пользователя.
Пример: Получаете готовый Dockerfile, который уменьшает размер образа с 800 МБ до 15 МБ.
7. Генерация Swagger-документации
Документация API не должна быть рутиной. Промт создаёт комментарии для swaggo.
Сгенерируй Swagger-комментарии для эндпоинта POST /api/users. Модель User: id (int), name (string), email (string). Включи описание, ответы 200, 400, 500.
Пример: Вставляете в код — и swag автоматически собирает документацию.
8. Обработка ошибок
Промт помогает единообразно обрабатывать ошибки и логировать их.
Перепиши этот код, чтобы ошибки оборачивались с помощью fmt.Errorf("операция: %w", err) и логировались через zap. Убери голый return err.
[вставьте код]
Пример: Улучшаете читаемость и упрощаете отладку.
9. Парсинг JSON в структуры
Когда нужно быстро разобрать входящий JSON, промт генерирует структуры.
Создай Go-структуры для JSON:
{"id":1, "name":"John", "tags":["a","b"], "address":{"city":"NYC"}}
Используй json tags. Добавь методы Validate.
Пример: Получаете структуры с валидацией и тегами.
10. Конфигурация через env
Промт создаёт типизированную конфигурацию с проверкой обязательных полей.
Сгенерируй код для загрузки конфигурации из env в Go с использованием caarlos0/env.
Переменные: DATABASE_URL (обязательная), LOG_LEVEL (по умолчанию info), PORT (по умолчанию 8080).
Выведи структуру Config и функцию Load.
Пример: Экономите время на парсинге env и валидации.
11. Профилирование и оптимизация
Промт помогает найти узкие места в коде.
Вот Go-функция, которая обрабатывает слайс строк. Предложи оптимизации: избегай аллокаций, используй strings.Builder, предвыдели память.
[вставьте код]
Пример: ИИ находит, что вы используете += в цикле, и советует strings.Builder — скорость растёт в 10 раз.
12. Генерация миграций
Миграции БД — это скучно. Промт генерирует их на основе схемы.
Напиши SQL-миграцию для создания таблицы users с полями id (serial primary key), name (varchar 255), email (varchar 255 unique), created_at (timestamptz default now()). Используй goose.
Пример: Получаете готовый SQL-файл для goose.
Итоги
Эти 12 промтов — лишь малая часть того, что можно автоматизировать в Go-разработке. Главное — не бояться экспериментировать и адаптировать промты под свои задачи. Начните с одного-двух, и вы заметите, как рутина уходит, а время на творчество остаётся.
А какие промты используете вы? Делитесь в комментариях — давайте создадим базу лучших практик для Go-сообщества!
Комментарии