Получение полного пути к источнику пакета из пути импорта пакета

В настоящее время у меня есть параметр, как 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

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

Другие вопросы по тегам