Вы когда-нибудь тратили полдня на написание boilerplate-кода для очередного микросервиса? Или часами дебажили гонки данных в горутинах? Я — да. Но с появлением современных LLM многое изменилось: теперь можно «разговаривать» с кодом на естественном языке. Проблема в том, что большинство промтов, которые гуляют по интернету, — это общие фразы вроде «напиши код на Go». Такой подход работает, но результат далёк от идеала.
В этой статье я собрал 15 конкретных промтов, которые реально экономят время. Они проверены на практике, используют актуальный синтаксис Go (на момент августа 2026) и покрывают самые частые задачи: от создания микросервисов до оптимизации под highload. Каждый промт — это готовый шаблон, который вы можете скопировать и адаптировать под свою задачу. Поехали!
1. Скелет микросервиса с чистой архитектурой
Когда использовать: когда нужно быстро создать новый микросервис с понятной структурой, не изобретая велосипед.
Промт:
Создай структуру Go-микросервиса для REST API, используя чистую архитектуру. Включи слои: delivery (HTTP handlers), usecase (бизнес-логика), repository (работа с БД). Используй стандартную библиотеку net/http и роутер chi. Для каждого слоя приведи пример кода с комментариями. Покажи, как связать слои через интерфейсы.
Пример использования:
Допустим, вы создаёте сервис для управления заказами. Промт вернёт структуру папок и файлы с кодом, где handler вызывает usecase, а usecase — repository. Это экономит время на проектирование и сразу даёт рабочий каркас.
2. Генерация CRUD-операций для PostgreSQL
Когда использовать: когда нужно быстро получить готовые SQL-запросы и Go-функции для стандартных операций с таблицей.
Промт:
Напиши Go-код для CRUD-операций с таблицей 'users' в PostgreSQL. Используй библиотеку pgx. Для каждой операции (Create, Read, Update, Delete) создай функцию с понятным названием, комментариями и обработкой ошибок. Также добавь пример миграции для создания таблицы.
Пример использования:
Вы копируете промт, подставляете свою схему, и получаете готовые функции CreateUser, GetUserByID, UpdateUser, DeleteUser с правильным использованием pgx. Это избавляет от рутинного написания SQL-запросов.
3. Обработка ошибок в Go: паттерны и примеры
Когда использовать: когда нужно понять, как правильно обрабатывать ошибки в конкретном контексте, например, при работе с файлами или сетью.
Промт:
Покажи примеры обработки ошибок в Go для следующих ситуаций: чтение файла, HTTP-запрос, работа с БД. Для каждой ситуации приведи код с использованием errors.Is, errors.As и fmt.Errorf с обёртыванием (%w). Объясни, когда какой подход использовать.
Пример использования:
Промт вернёт три блока кода с пояснениями. Например, для чтения файла будет показано, как проверить os.IsNotExist, для HTTP — как обработать таймаут, для БД — как различить sql.ErrNoRows. Это помогает избежать типичных ошибок новичков.
4. Оптимизация горутин: паттерны конкурентности
Когда использовать: когда нужно реализовать конкурентную обработку данных с ограничением количества одновременных горутин (worker pool).
Промт:
Напиши Go-код для пула воркеров, который обрабатывает задачи из канала. Используй паттерн worker pool с context.Context для отмены. Покажи, как корректно закрывать каналы и дожидаться завершения всех воркеров через sync.WaitGroup. Добавь пример с ограничением количества одновременных горутин через буферизированный канал.
Пример использования:
Вы получаете готовый код, который можно сразу вставить в проект. Например, для обработки пачки URL-адресов. Код будет безопасен с точки зрения гонок данных и корректно завершится при отмене контекста.
5. Написание unit-тестов с mock-объектами
Когда использовать: когда нужно быстро покрыть тестами функцию, которая зависит от внешних сервисов (БД, API).
Промт:
Напиши unit-тесты для функции GetUserByID, которая использует интерфейс UserRepository. Используй библиотеку testify для создания моков. Покрой случаи: успешное получение, ошибка 'user not found', ошибка БД. Покажи, как использовать testify/mock для создания заглушек.
Пример использования:
Промт вернёт тестовый файл с тремя тестами, используя mock.Mock. Вы адаптируете его под свой интерфейс, и тесты готовы. Это ускоряет написание тестов в разы.
6. Профилирование и оптимизация производительности
Когда использовать: когда нужно найти узкие места в коде и понять, как их исправить.
Промт:
Дай советы по оптимизации производительности Go-приложения. Рассмотри: аллокации памяти (использование sync.Pool, избегание лишних конкатенаций строк), работа с GC (настройка GOGC), профилирование с помощью pprof. Приведи пример кода с профилированием и объясни, как читать вывод pprof.
Пример использования:
Вы получаете конкретные рекомендации и пример кода, который можно запустить. Например, использование runtime/pprof для CPU-профиля. Это помогает систематически подходить к оптимизации.
7. Чтение конфигурации из env-переменных
Когда использовать: когда нужно настроить приложение через переменные окружения без лишних библиотек.
Промт:
Напиши Go-код для чтения конфигурации из переменных окружения. Используй стандартный пакет os, но с удобной обёрткой. Создай структуру Config, которая заполняется из env. Покажи, как обрабатывать отсутствие переменной (значение по умолчанию) и как парсить числа и булевые значения.
Пример использования:
Вы получаете готовый пакет config.go, который читает DATABASE_URL, PORT, DEBUG и т.д. Это удобно для 12-factor приложений.
8. Graceful shutdown HTTP-сервера
Когда использовать: когда нужно корректно завершать работу сервера, дожидаясь обработки текущих запросов.
Промт:
Покажи, как реализовать graceful shutdown HTTP-сервера в Go. Используй signal.NotifyContext для перехвата SIGINT и SIGTERM, затем вызови server.Shutdown с таймаутом. Приведи полный пример с комментариями.
Пример использования:
Вставляете код в свой main.go — и сервер корректно завершается при остановке. Это стандартный паттерн, который часто спрашивают на собеседованиях, и промт даёт рабочий пример.
9. Работа с JSON: быстрые и эффективные методы
Когда использовать: когда нужно сериализовать/десериализовать JSON с учётом производительности и кастомных полей.
Промт:
Покажи примеры работы с JSON в Go: маршалинг и анмаршалинг структур с тегами, обработка неизвестных полей (DisallowUnknownFields), работа с числами без потери точности (json.Number), использование json.RawMessage для отложенной обработки. Приведи код для каждого случая.
Пример использования:
Вы получаете четыре примера, которые можно сразу использовать. Например, для API, где нужно принимать json.Number для больших чисел, или для проксирования запросов с json.RawMessage.
10. Генерация Swagger-документации
Когда использовать: когда нужно автоматически сгенерировать документацию API из кода.
Промт:
Опиши, как сгенерировать Swagger-документацию для Go API с помощью swaggo. Приведи пример аннотаций для REST-эндпоинтов, покажи, как настроить генерацию через go generate, и как подключить swagger UI.
Пример использования:
Промт даст команды и аннотации, например // @Summary Get user by ID. После выполнения swag init вы получите папку docs и сможете открыть swagger UI. Это экономит часы ручного документирования.
11. Работа с контекстом и таймаутами
Когда использовать: когда нужно передавать отмену и дедлайны между функциями, особенно в микросервисах.
Промт:
Напиши примеры использования context.Context в Go: передача значения (context.WithValue), отмена (context.WithCancel), дедлайн (context.WithTimeout). Покажи, как правильно обрабатывать отмену в горутинах и как избегать утечек.
Пример использования:
Вы получаете три примера с пояснениями. Например, как сделать HTTP-запрос с таймаутом 5 секунд и как отменить фоновую горутину при завершении работы. Это критично для highload.
12. Парсинг и валидация входных данных
Когда использовать: когда нужно валидировать данные, приходящие в API, без написания множества if-условий.
Промт:
Покажи, как валидировать структуры в Go с помощью библиотеки go-playground/validator. Приведи пример структуры с тегами validate (required, email, min, max), напиши функцию для валидации и обработки ошибок.
Пример использования:
Вы получаете структуру с тегами и функцию validate.Struct, которая возвращает понятные ошибки. Это сокращает код валидации на 80%.
13. Graceful-обработка паники в горутинах
Когда использовать: когда нужно защитить приложение от падения из-за паники в отдельной горутине.
Промт:
Напиши код для безопасного запуска горутин с recover. Создай функцию GoSafe, которая принимает функцию и ловит панику, логируя её. Покажи, как использовать её для фоновых задач.
Пример использования:
Вставляете функцию GoSafe и оборачиваете вызовы горутин. Это предотвращает крах всего приложения из-за одной ошибки.
14. Работа с БД: транзакции и пул соединений
Когда использовать: когда нужно правильно работать с транзакциями и управлять пулом соединений.
Промт:
Покажи, как использовать database/sql в Go для работы с PostgreSQL: настройка пула соединений (SetMaxOpenConns, SetMaxIdleConns), выполнение транзакций с BEGIN/COMMIT/ROLLBACK, обработка ошибок. Приведи пример с использованием pgx.
Пример использования:
Вы получаете код для настройки БД и пример транзакции с откатом при ошибке. Это помогает избежать утечек соединений и гонок.
15. Создание CLI-инструмента с cobra
Когда использовать: когда нужно быстро создать утилиту командной строки.
Промт:
Создай простой CLI-инструмент на Go с помощью cobra. Добавь команду 'greet' с флагом --name и команду 'version'. Покажи, как настроить корневую команду, подкоманды и флаги.
Пример использования:
Вы получаете код, который можно скомпилировать и использовать. Это отличный шаблон для создания своих утилит.
Итоги
Эти 15 промтов — не магия, а просто способ быстрее получать качественный код. Конечно, LLM не заменят опытного разработчика, но они отлично справляются с рутиной. Начните с малого: возьмите промт для CRUD или graceful shutdown и адаптируйте под свой проект. Вы удивитесь, сколько времени сэкономите.
А если у вас есть свои любимые промты для Go — поделитесь в комментариях. Вместе мы сделаем разработку ещё эффективнее!
Комментарии