Пустой импорт _

Пустой импорт (blank import) в Go — это импорт пакета с использованием символа подчеркивания _ в качестве псевдонима. Он используется, когда необходимо импортировать пакет исключительно для выполнения его функции init или регистрации компонентов, но сам пакет не используется непосредственно в коде. Первым аргументом выступает сам импорт, а вторым — путь к пакету.

Синтаксис

goimport _ "path/to/package"

Пример

Давайте импортируем пакет только для инициализации его внутренних структур:

gopackage main

import (
  "fmt"
  _ "example.com/mydb"
)

func main() {
  fmt.Println("Application started")
}

Результат выполнения кода:

go"Database driver registered"
"Application started"

Пример

Рассмотрим ситуацию, когда пустой импорт используется для автоматической регистрации формата изображений:

gopackage main

import (
  "fmt"
  "image"
  _ "image/png"
)

func main() {
  formats := image.RegisteredFormats()
  fmt.Println(formats)
}

Результат выполнения кода:

go"png"

Пример

Пустой импорт можно использовать для выполнения нескольких инициализирующих функций из разных пакетов:

gopackage main

import (
  "fmt"
  _ "example.com/logger"
  _ "example.com/metrics"
)

func main() {
  fmt.Println("All packages initialized")
}

Результат выполнения кода:

go"Logger initialized"
"Metrics collector started"
"All packages initialized"

Смотрите также

  • статью init,
    о функции инициализации пакета
  • статью init-order,
    о порядке вызова функций init
  • статью import-alias,
    о псевдонимах при импорте
  • статью dot-import,
    о точечном импорте