В чём проблема копирования sql.DB по значению, а не по указателю?

sql.DB — долгоживущий конкурентно используемый пул с внутренним состоянием и синхронизацией. Копировать его по значению нельзя; передавайте *sql.DB.

Короткий ответ

Что ответить на собеседовании

sql.DB — долгоживущий конкурентно используемый пул с внутренним состоянием и синхронизацией. Копировать его по значению нельзя; передавайте *sql.DB.

Подробный разбор

Ответ с пояснениями

sql.DB — долгоживущий конкурентно используемый пул с внутренним состоянием и синхронизацией. Копировать его по значению нельзя; передавайте *sql.DB.

Конструктор sql.Open уже возвращает указатель, предназначенный для совместного использования. Копия структуры дублирует служебные поля и locks, но не создаёт корректный независимый пул. Храните *sql.DB в репозиториях, настройте лимиты и закрывайте его на уровне жизненного цикла приложения. Для транзакции используйте отдельный *sql.Tx, а не копию DB.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее