> На какие действия можно повесить триггер (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Avito

Стек: Go

> Пример ответа

В Go триггеры (триггеры) как таковые не являются встроенной концепцией языка - в отличие от SQL или реляционных БД. Однако в контексте бэкенд-разработки на Go под "триггером" чаще всего понимают механизм, который запускает определённое действие в ответ на событие. Основные действия, на которые можно "повесить" триггер:

  1. Изменения в базе данных (SQL-триггеры) - если Go-приложение использует PostgreSQL, MySQL или другую СУБД, триггеры навешиваются на INSERT, UPDATE, DELETE (например, для аудита или каскадных обновлений). В коде Go это реализуется через миграции (библиотеки типа golang-migrate).

  2. События в очереди сообщений - триггер на получение сообщения из очереди (RabbitMQ, Kafka, NATS). Действие: запуск обработчика (handler) при появлении нового сообщения в топике или очереди.

  3. HTTP-запросы - триггер на входящий HTTP-запрос (например, вебхук). Действие: вызов определённого обработчика (handler) в роутере (Gin, Echo, Chi).

  4. Таймеры (cron-задачи) - триггер по расписанию (каждые N минут, в определённое время). Действие: запуск фоновой задачи (например, через robfig/cron или time.Ticker).

  5. Системные сигналы ОС - триггер на сигналы (SIGINT, SIGTERM, SIGHUP). Действие: graceful shutdown, перезагрузка конфигурации.

  6. Изменения в файловой системе - триггер на создание/изменение/удаление файла (через fsnotify). Действие: перезагрузка конфига, обработка загруженного файла.

  7. События в Go-каналах - триггер на поступление данных в канал (select/case). Действие: запуск горутины-обработчика.

Пример для Go (триггер на HTTP-запрос):

GO
r.POST("/webhook", func(c *gin.Context) {
// действие при получении POST-запроса
})

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью