От горутин до продакшена: 12 промтов, которые превратят ChatGPT в Go-архитектора

Go — это язык, который любят за простоту и мощь, но даже опытные разработчики иногда спотыкаются о подводные камни конкурентности, управления памятью или проектирования микросервисов. Я каждый день работаю с Go и активно использую AI-ассистентов, чтобы ускорить рутину и находить элегантные решения. В этой подборке — 12 проверенных промтов, которые реально экономят часы работы. Они не про «напиши код», а про то, как заставить нейросеть думать вместе с вами, как старшего коллегу. Ниже — конкретные формулировки, примеры использования и ожидаемый результат.

Промт №1: Разбор конкурентного кода на предмет гонок данных

Проблема: Вы написали код с горутинами, но он работает нестабильно, периодически падает с fatal error: concurrent map writes или дает неверные результаты.

Решение: Попросите ИИ провести code review с фокусом на data races. Промт:

Ты — senior Go-разработчик. Проведи аудит этого кода на предмет гонок данных (data races) и проблем с синхронизацией. Укажи конкретные строки, объясни, почему возникает гонка, и предложи исправление с использованием мьютексов, атомиков или каналов. Код:
go var counter int func increment() { for i := 0; i < 1000; i++ { counter++ } } func main() { go increment() go increment() time.Sleep(time.Second) fmt.Println(counter) }

Результат: ИИ объяснит, что counter++ — не атомарная операция, и предложит использовать sync.Mutex или atomic.AddInt64. Это экономит время на отладке.

Промт №2: Генерация идоматичного кода для работы с каналами

Проблема: Нужно реализовать паттерн worker pool, но не хочется изобретать велосипед.

Решение: Попросите сгенерировать код с использованием каналов, воркеров и graceful shutdown. Промт:

Сгенерируй идоматичный Go-код для пула воркеров, который обрабатывает задания из канала jobs, отправляет результаты в канал results, поддерживает конкурентность N воркеров и корректно завершается по сигналу. Используй контекст и sync.WaitGroup. Пример задания — просто функция, которая возвращает квадрат числа.

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

Промт №3: Оптимизация производительности с помощью pprof

Проблема: Приложение потребляет слишком много памяти или CPU, нужно найти узкое место.

Решение: Используйте промт для анализа профиля. Промт:

У меня есть Go-приложение, которое потребляет 2 ГБ памяти, хотя должно укладываться в 500 МБ. Вот вывод go tool pprof для heap: [вставьте вывод]. Проанализируй, какие функции создают больше всего объектов, и предложи оптимизации. Также подскажи, как использовать runtime.MemStats для диагностики.

Результат: ИИ укажет на конкретные аллокации и предложит использовать sync.Pool, изменить структуры данных или избежать утечек горутин.

Промт №4: Проектирование микросервиса с нуля

Проблема: Нужно спроектировать архитектуру нового микросервиса на Go, но хочется следовать best practices.

Решение: Попросите ИИ спроектировать структуру проекта. Промт:

Спроектируй структуру Go-микросервиса для REST API, который обрабатывает заказы. Учитывай: чистая архитектура, разделение на слои (handlers, services, repositories), работа с PostgreSQL через database/sql, использование context.Context, graceful shutdown, конфигурация через env-переменные. Предложи структуру папок и опиши ответственность каждого модуля.

Результат: Получите каркас проекта, который можно сразу начать наполнять кодом.

Промт №5: Написание тестов с использованием table-driven подходов

Проблема: Нужно покрыть тестами функцию, которая обрабатывает разные кейсы, но писать сотни одинаковых тестов — скучно.

Решение: Попросите сгенерировать table-driven тесты. Промт:

Напиши table-driven тесты для функции func ParseDuration(s string) (time.Duration, error), которая парсит строки вида "1h30m". Включи кейсы: валидные строки, некорректные, пустые, с пробелами. Используй стандартный пакет testing. Выведи код теста.

Результат: Готовый тест с таблицей кейсов, который легко расширять.

Промт №6: Рефакторинг с сохранением поведения

Проблема: Есть legacy-код, который нужно отрефакторить, но страшно изменить поведение.

Решение: Попросите ИИ выполнить рефакторинг с объяснением шагов. Промт:

Отрефактори этот Go-код, сохранив его поведение. Улучши читаемость, вынеси дублирование в функции, замени interface{} на any (Go 1.18+). Объясни каждый шаг рефакторинга. Код: [вставьте код]. После рефакторинга предложи, какие тесты нужно написать для проверки.

Результат: Улучшенный код с пояснениями и планом тестирования.

Промт №7: Генерация документации в формате GoDoc

Проблема: Нужно задокументировать экспортируемые функции, но писать комментарии вручную — долго.

Решение: Попросите ИИ сгенерировать комментарии. Промт:

Сгенерируй комментарии в формате GoDoc для следующего кода. Каждая экспортируемая функция должна иметь комментарий, начинающийся с имени функции, описывающий параметры и возвращаемые значения. Пример: // Add sums two integers.. Код: [вставьте код].

Результат: Готовая документация, которую можно сразу вставить в код.

Промт №8: Объяснение сложных концепций

Проблема: Непонятно, как работает select с несколькими каналами или в чем разница между sync.Mutex и sync.RWMutex.

Решение: Попросите объяснить на примере. Промт:

Объясни, как работает select в Go, с примерами. Покажи, как использовать select с таймаутом, с несколькими каналами, с default. Приведи реальный сценарий, например, ожидание ответа от двух сервисов.

Результат: Понятное объяснение с кодом, который можно запустить.

Промт №9: Поиск утечек горутин

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

Решение: Попросите ИИ помочь найти утечку. Промт:

У меня есть Go-приложение, которое запускает горутины для обработки запросов. Через несколько часов работы потребление памяти растет. Вот код, который запускает горутины: [вставьте код]. Как проверить, есть ли утечка горутин? Предложи методы с использованием runtime.NumGoroutine() и go tool pprof. Также покажи, как использовать context.WithCancel для корректного завершения горутин.

Результат: План диагностики и исправления.

Промт №10: Интеграция с внешними API

Проблема: Нужно написать клиент для внешнего REST API с обработкой ошибок и ретраев.

Решение: Попросите сгенерировать код. Промт:

Напиши Go-клиент для REST API, которое возвращает JSON. Реализуй функцию GetUser(id int) (*User, error) с обработкой статус-кодов 404, 500, таймаутом в 5 секунд и ретраем до 3 раз с экспоненциальной задержкой. Используй net/http и encoding/json. Покажи пример использования.

Результат: Готовый клиент с ретраями и обработкой ошибок.

Промт №11: Написание SQL-запросов с использованием database/sql

Проблема: Нужно выполнить сложный запрос с JOIN и пагинацией, но не хочется ошибиться в синтаксисе.

Решение: Попросите сгенерировать код. Промт:

Напиши Go-код для выполнения SQL-запроса к PostgreSQL, который выбирает заказы пользователя с JOIN на таблицу товаров, с пагинацией (LIMIT и OFFSET) и фильтром по дате. Используй database/sql и _ "github.com/lib/pq". Приведи код с подготовленными выражениями (PreparedStatement).

Результат: Код с правильным использованием QueryContext и Scan.

Промт №12: Проектирование Graceful Shutdown

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

Решение: Попросите реализовать паттерн. Промт:

Реализуй graceful shutdown для HTTP-сервера на Go. Используй signal.NotifyContext, http.Server.Shutdown с таймаутом. Покажи, как дождаться завершения всех текущих запросов и закрыть соединения с БД. Приведи полный код main.go.

Результат: Готовый шаблон, который можно вставить в проект.

Как выжать максимум из этих промтов

  • Всегда уточняйте версию Go (1.22, 1.23 и т.д.), чтобы ИИ использовал актуальный синтаксис.
  • Если промт не дал ожидаемого результата, добавьте контекст: «учти, что у нас используется фреймворк Gin» или «мы работаем с MongoDB, а не PostgreSQL».
  • Не бойтесь задавать уточняющие вопросы: «А почему ты выбрал именно этот паттерн?» — это помогает глубже понять решение.

Эти промты — не магия, а инструмент. Они экономят время на рутине, но не заменяют понимание языка. Используйте их как стартовую точку, а критическое мышление оставляйте за собой. Если у вас есть свои проверенные промты для Go — делитесь в комментариях, давайте соберем базу знаний.

← Все статьи

Комментарии

Читайте также

Go-промты, которые реально экономят часы: 15 сценариев от микросервисов до highload

22 августа 2026

Маркетинг на автопилоте: 15 промтов, которые заменят рутину и освободят 10+ часов в неделю

22 августа 2026

Легаси-код больше не страшен: 15 промтов для рефакторинга и оптимизации

22 августа 2026

15 проверенных промтов, которые ускоряют мои SQL-запросы в PostgreSQL и MongoDB

22 августа 2026

От блокнота до нейросети: как я собираю контент-план на месяц с помощью 15 рабочих промтов

22 августа 2026

SEO-промты 2026: как я вытащил сайт из топ-50 в топ-3 с помощью 15 запросов к ИИ

22 августа 2026

Автоматизация маркетинга без команды: 12 промтов, которые сэкономят вам 25 часов в неделю

22 августа 2026

От хаоса к автоматизации: как инженер-робототехник превратил IoT-тестирование в конвейер с помощью ИИ-промтов

22 августа 2026

Кросс-платформенная разработка на автопилоте: 14 промтов для React Native и Flutter в 2026 году

22 августа 2026