Несколько других ответов здесь устарели на этом этапе.
Существует как минимум два случая, которые нужно рассмотреть:
Случай 1
Вы хотите установитьинструмент, но вы не хотите изменять текущий go.mod
, чтобы отслеживать этот инструмент как зависимость.
Короче говоря, с Go 1.12 или 1.13, самое простое решение - cd
для каталога безgo.mod
, например:
$ cd /tmp
$ go get github.com/some/tool@v1.0.1
В качестве альтернативы, gobin - это модульная команда для установки или запуска двоичных файлов, которая обеспечивает дополнительную гибкость, включая возможность установки без изменения вашегоgo.mod
текущего модуля * См. связанный ответ для получения более подробной информации, включая решение для Go 1.11, а также вероятную новую опцию в Go 1.14 для получения инструмента без обновления вашегоgo.mod
.
Случай 2
С другой стороны, если вы хотите явно отслеживать инструмент как версионную зависимость в go.mod
, см. «Как отслеживать зависимости инструментадля модуля? " FAQ по модулям wiki.
Короче говоря, вы создаете файл tools.go
в отдельном пакете и устанавливаете тег сборки // +build tools
, например:
// +build tools
package tools
import (
_ "golang.org/x/tools/cmd/stringer"
)
Операторы импорта позволяют команде go
точно записывать информацию о версии ваших инструментов в go.mod
вашего модуля, в то время как ограничение сборки // +build tools
не позволяет вашим обычным сборкам фактически импортировать ваши инструменты.