логотип PurpleSchool
логотип PurpleSchool

Команда go get в Golang

Автор

Александр Гольцман

Команда go get в Golang

Команда go get в языке программирования Go используется для загрузки и обновления зависимостей в проектах. Она упрощает управление внешними пакетами, позволяя автоматически загружать их из репозиториев. В этой статье я покажу, как работает go get, какие у нее есть особенности и как ее использовать в современных версиях Go.

Основы работы go get

В более ранних версиях Go команда go get использовалась для загрузки и установки пакетов. Однако начиная с Go 1.17 ее функциональность изменилась: теперь она работает только с модулями. Это значит, что для корректного использования go get ваш проект должен находиться в модуле Go, то есть содержать файл go.mod.

Смотрите, как можно инициализировать новый модуль:

go mod init example.com/myproject

Этот шаг необходим перед тем, как устанавливать пакеты с помощью go get, поскольку Go использует модули для управления зависимостями.

Установка пакетов

Допустим, вам нужно подключить пакет github.com/gorilla/mux для работы с маршрутизацией. Используйте команду:

go get github.com/gorilla/mux

Эта команда загружает пакет и добавляет его в go.mod. Теперь вы можете использовать его в коде. Если у вас уже есть пакет, но вы хотите обновить его до последней версии, выполните:

go get -u github.com/gorilla/mux

Здесь флаг -u указывает Go на обновление зависимости.

Управление версиями зависимостей

В Go можно устанавливать конкретные версии пакетов, например:

go get github.com/gorilla/mux@v1.8.0

Если вы хотите обновить все зависимости проекта, используйте:

go get -u ./...

Этот вариант обновит все пакеты в текущем модуле.

Удаление зависимостей

Хотите удалить ненужные зависимости? Просто удалите их импорт из кода и выполните:

go mod tidy

Эта команда очистит go.mod и go.sum, оставив только необходимые пакеты.

Заключение

Команда go get остается важным инструментом для работы с зависимостями в Go, особенно в контексте модульной системы. Теперь она используется исключительно для загрузки и обновления пакетов, а их установка происходит при сборке или запуске кода. Если вы работаете с Go, понимание go get поможет вам эффективно управлять зависимостями и поддерживать проект в актуальном состоянии.

Стрелочка влевоGopath и goroot в GoКоманда go mod в GolangСтрелочка вправо

Все гайды по Golang

Работа с YAML в GolangПреобразование типов в GolangКонвертация структур в JSON в GolangStrconv в GolangИспользование пакета SQLx для работы с базами данных в GolangРазбираемся с SQL в GolangРазделение строк с помощью функции split в GolangSort в GoПоиск и замена строк в Go - GolangИспользование пакета reflect в GolangРабота с PostgreSQL в GoPointers в GolangПарсинг в GoРабота со списками (list) в GolangПреобразование int в string в GolangРабота с числами с плавающей точкой в GolangРабота с полями в GolangИспользование enum в GolangОбработка JSON в GoЧтение и запись CSV-файлов в GolangРабота с cookie в GolangРегистры в GoКэширование данных в GolangПреобразование byte в string в GolangByte в GoИспользование bufio для работы с потоками данных в GolangДобавление данных и элементов (add) в Go
Логирование в Golang. Zap, Logrus, Loki, GrafanaРабота с Docker-контейнерами в GoИспользование pprof в GolangМеханизмы синхронизации в GolangРабота с пакетом S3 в GolangМониторинг Golang приложений с помощью PrometheusОптимизация проектов на GoПаттерны проектирования в GolangМиграции базы данных в GolangОркестрация контейнеров Go с Kubernetes + DockerGjGo Playground и компилятор GolangИспользование go mod init для создания модулей GolangРабота с переменными окружения (env) в GolangКоманда go build в GolangАвтоматизация Golang проектов — CI/CD с GitLab CI и JenkinsОтладка кода в GolangЧтение и использование конфигурации в приложениях на GolangКомпиляция в GolangКак развернуть Go-приложение на облаке AWSАутентификация в Golang
Сетевые протоколы в GoПеременные в GolangЗначения в GolangДженерик %T и его применение в GolangТипы данных в GolangИспользование tls в GolangИспользование tag в структурах GolangSwitch в GoСтроки в GolangРабота с потоками (stream) в GolangSelect в GoРуны в GoРабота с пакетом params в GolangКонвертация строк в числа в GolangNull, Nil, None, 0 в GoНаименования переменных, функций и структур в GoInt в GolangУстановка GolangЧтение и установка HTTP заголовков в GolangMethods в GolangGoLand — IDE для разработки на Golang от JetBrainsОбработка «not found» в GolangFloat в GolangФлаги командной строки в Go (Golang)Запуск внешних команд в GolangОбработка ошибок в GoИспользование defer в GolangЗначения default в GolangГенерация кода в GoФорматирование кода в GolangЧистая архитектура в GolangКаналы (channels) в GolangПолучение body из HTTP запроса в Golang
Открыть базу знаний