Назад в блог

Как импортировать пакеты в Go

Как импортировать пакеты в Go

Go (также известный как Golang) — это статически типизированный язык программирования с открытым исходным кодом. Первоначально он был разработан компанией Google. Среди ключевых особенностей Go можно выделить простоту, высокую производительность, читаемость и эффективность.

Как и у любого другого известного языка программирования, стандартная библиотека Go предлагает богатый набор пакетов. Однако мы также можем расширить функциональность, добавив сторонние пакеты. Это руководство продемонстрирует импорт пакетов и их интеграцию в ваши проекты на Go.

Предварительные требования

Для выполнения этого руководства вам понадобятся следующие компоненты:

Шаг 1 – Установка Go

Мы уже обсуждали установку основного языка программирования Go на Ubuntu 20.04. Однако существует более простой альтернативный метод: g  (легковесный менеджер версий Go).

Причина, по которой мы собираемся использовать g , заключается в том, что ни одна из версий Go, доступных в репозиториях пакетов Ubuntu или snap, не является последней доступной версией Go (v1.18 на момент написания этого руководства). Всегда рекомендуется использовать последнюю доступную версию любого пакета языка программирования.

Следующая команда запустит g  скрипт установки:

Import Packages in Go install go

Import Packages in Go installing go 2

Чтобы изменения вступили в силу, вам необходимо перезапустить сессию оболочки. После перезапуска проверьте установку:

Import Packages in Go check go version

После установки Go также рекомендуется установить gopls . Это официальный языковой сервер Go. Он совместим со многими текстовыми редакторами, такими как VS Code, Vim, Emacs, Sublime Text, Atom и многими другими. Выполните следующую команду:

Наша среда программирования Go готова.

Шаг 2 – Создание тестового скрипта Go

Весь код, продемонстрированный в этом руководстве, поместится в один скрипт Go. Создайте тестовый скрипт Go:

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

Здесь компилятор Go запустит код в режиме интерпретатора.

Шаг 3 – Использование пакетов стандартной библиотеки

Go поставляется с огромной стандартной библиотекой. Она состоит из множества пакетов, например:

  • fmt: реализует форматированный ввод-вывод с функциями, аналогичными функциям в C ( printf  и scanf ).
  • http: этот пакет предоставляет функции для создания веб-сервисов, отправки и получения данных по протоколу http  и т. д.

Чтобы включить любой пакет в проект Go, его необходимо импортировать с помощью инструкции import . Инструкция объявляется ключевым словом import  вместе с именами пакетов. Например, для импорта math/rand  инструкция импорта будет выглядеть следующим образом:

Следующий код реализует различные функции из пакета math/rand :

Этот код демонстрирует простой цикл for, который выводит на экран 10 случайных целых чисел (от 0 до 24). Здесь:

  • rand.Int() : этот вызов функции возвращает случайное целое число.
  • rand.Intn() : работает аналогично rand.Int() , но принимает параметр, определяющий диапазон для случайных целых чисел (от 0 до указанного числа).

Затем запустите код:

Вывод будет выглядеть следующим образом:

random number program

Обратите внимание, что вывод будет абсолютно одинаковым, так как начальное значение (seed) для генератора случайных чисел по умолчанию является фиксированным. Такова природа генератора псевдослучайных чисел. Вы можете узнать больше о random seed здесь.

Step 4 – Импорт нескольких пакетов

Более крупные и сложные проекты требуют использования нескольких пакетов. Как импортировать их в код на Go? Один из допустимых вариантов — использовать отдельные инструкции импорта для каждого импортируемого пакета. Однако этот подход неэффективен по сравнению со следующей структурой импорта:

Здесь одна инструкция import объединяет несколько пакетов одновременно. Это сокращает объем кода, который необходимо написать, и улучшает читаемость.

Следующий код демонстрирует эту возможность в действии:

Запустите код:

Вывод будет выглядеть примерно так:

importing multiple packages

Step 5 – Установка дополнительных библиотек Go

Стандартная библиотека Go поставляется с множеством полезных пакетов. По своему назначению они являются универсальными. Это позволяет разработчикам создавать собственные пакеты на базе стандартной библиотеки для удовлетворения своих конкретных потребностей. Ознакомьтесь с официальной Go package database.

Что делать, если вам нужно использовать сторонний пакет Go? Go поставляется с go install  командой ( go get  устарела). Она позволяет загрузить любой сторонний пакет Go из Интернета.

Для демонстрации мы установим пакет cobra-cli . Следующая команда Go загрузит и установит необходимые файлы и интегрирует пакет в систему библиотек Go:

install cobra cli

Исполняемый файл cobra-cli  должен находиться по следующему пути:

list gopath files

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

list package files

Начиная с Go v1.11, модули Go определяют версию импортируемого пакета. Подробно это описано здесь: Go Modules GitHub.

Step 6 – Псевдонимы пакетов

В различных ситуациях вы можете столкнуться с конфликтом имен между локальными и импортируемыми пакетами. В таких случаях использование псевдонимов (aliasing) позволяет разрешить коллизию. Структура псевдонимов выглядит примерно так:

Давайте изменим нашу простую программу на Go, чтобы использовать fmt_alias  в качестве псевдонима для пакета fmt :

Обратите внимание, что вместо использования fmt.Printf() , мы используем псевдоним пакета fmt_alias.Printf() .

Однако Go не очень приветствует псевдонимы. Если вы используете псевдонимы для предотвращения конфликта имен импорта, рекомендуется задавать псевдоним для наиболее локального или специфичного для проекта импорта. Например, если вы хотите использовать как локальный пакет strings , так и системный пакет strings , то вам следует задать псевдоним для локального пакета, а не для системного.

Лучшая практика — изначально избегать конфликтов имен.

Step 7 – Форматирование импорта

Мы научились объявлять все импорты с помощью одной инструкции import . Что если у вас несколько импортов? Например:

Форматирование импорта сортирует пакеты в определенном порядке, улучшая согласованность кода. Поскольку оно сортирует только порядок импорта, это также предотвращает случайные коммиты. Это также предотвращает ненужные изменения в коде и запутанные обзоры кода.

Большинство современных редакторов форматируют импорт автоматически. В качестве альтернативы они поддерживают goimports. В индустрии принято использовать goimports  вместо ручной сортировки импорта. Кроме того, goimports  также отражает изменения стиля в коде.

Вот как может выглядеть блок import  после применения goimports :

Заметили какую-нибудь закономерность?

  • Все стандартные библиотеки группируются первыми.
  • Группы разделены пустыми строками, что улучшает читаемость кода.

Заключение

Импорт в Go — это мощная функция, позволяющая вызывать функции, не встроенные в Go. Хотя стандартная библиотека предлагает множество пакетов общего назначения, Go также поддерживает сторонние пакеты. В этом руководстве показано, как импортировать встроенные и сторонние пакеты Go.

В этом руководстве мы запускали наши программы на Go с помощью интерпретатора. Однако вы можете скомпилировать код в автономные исполняемые файлы для повышения производительности. Вы можете узнать больше о компиляции программ на Go здесь. Если вы хотите узнать, как развернуть веб-приложение на Go с помощью Nginx, ознакомьтесь с этим руководством. Кроме того, вы можете ознакомиться с нашим руководством, в котором показано, как писать собственные пакеты Go.

Вы разработчик на Go? CloudSigma предлагает поддержку Go API для бесшовной интеграции с вашими проектами.

Приятной работы!

author

Preslav Dobrev

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.