🟢 Лёгкий · 1 очк. Основы синтаксиса
Зачем используется import _ "github.com/lib/pq"?
A Отключает пакет
B Выполняет init() пакета для регистрации драйвера БД
C Импортирует все имена
D Это ошибка синтаксиса
Объяснение вопроса

Blank import (_) загружает пакет и выполняет его init(), но не даёт доступа к именам пакета. Драйверы БД в Go регистрируют себя в database/sql именно в init(). Без такого импорта при вызове sql.Open("postgres", ...) драйвер не будет зарегистрирован и Open вернёт ошибку.

import (
    "database/sql"
    _ "github.com/lib/pq"
)
db, err := sql.Open("postgres", connStr)  // драйвер "postgres" известен

Компилятор не считает blank import неиспользуемым - пакет нужен именно ради побочного эффекта init().

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.