В мире программирования на Go символ подчеркивания ( _ ), предшествующий оператору импорта, имеет особое значение. Давайте рассмотрим его значение и использование.
Подчеркивание (_) в операторе импорта указывает, что пакет импортируется исключительно из-за его побочных эффектов. Он не импортирует какие-либо функции, методы или переменные из пакета.
Некоторые пакеты Go имеют функции инициализации (обычно называемые init() ), которые выполняют действия, когда пакет импортирован. Эти действия могут включать в себя регистрацию пользовательских драйверов базы данных, инициализацию глобальных переменных или настройку ведения журнала.
Чтобы импортировать пакет из-за его побочных эффектов и ничего больше, используется идентификатор подчеркивания: используется как явное имя пакета в операторе импорта. Например, рассмотрим фрагмент кода из go-sqlite3:
import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" "log" "os" )
В этом случае импорт подчеркивания «github.com/mattn/go-sqlite3» регистрирует драйвер sqlite3 в стандартной библиотеке sql. Это позволяет вам использовать sqlite3 в качестве подключения к базе данных в вашем коде без необходимости импортировать какие-либо функции из этого пакета.
В случае go-sqlite3, следующий код инициализации выполняется при импорте пакета:
sql.Register("sqlite3", &SQLiteDriver{})
Это регистрация позволяет вам использовать sqlite3 следующим образом:
db, err := sql.Open("sqlite3", "./foo.db")
Подчеркивание Операторы импорта в Go — удобный способ импортировать пакет исключительно из-за его побочных эффектов. Они позволяют вам воспользоваться процедурами инициализации пакета без явного импорта функций или переменных. Понимая цель и использование импорта подчеркивания, вы можете эффективно управлять зависимостями пакетов и побочными эффектами в своих проектах Go.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3