#go #gopath #go-packages
# #Вперед #gopath #перейти-пакеты
Вопрос:
В настоящее время у меня есть такой параметр, как str := "github.com/pkg/errors"
. Мне нужен полный путь к пакету.
В настоящее время я добиваюсь этого с помощью build.Default.GOPATH "/src/" str
.
Существует ли собственный, не хакерский способ определения полного пути к импорту (который может находиться в vendor
папке и т. Д.).
Ответ №1:
Используйте пакет go / build для разрешения пути импорта в каталог:
p, err := build.Default.Import("github.com/pkg/errors", ".", build.FindOnly)
if err != nil {
// handle error
}
d := p.Dir
Этот фрагмент разрешает локальный импорт относительно текущего рабочего каталога. Замените "."
на ""
, если вы не хотите разрешать локальный импорт или предоставлять другой каталог, если это необходимо.