Для просмотра списка установленных пакетов с использованием GOPATH
см. Старую ветку: Как просмотреть список установленных пакетов go
Следующее относится к режиму нового модуля.
Во время компиляции / сборки
Вы можете использовать команду go list -m all
для просмотра окончательных версий, которые будут использоваться при сборке для всех прямых и косвенных зависимостей ( source ).Подробнее об этом вы можете прочитать здесь: Модули: выбор версии .
Во время выполнения
Во время выполнения (из вашего приложения) вы можете использовать debug.ReadBuildInfo()
функция:
ReadBuildInfo возвращает информацию о сборке, встроенную в исполняемый двоичный файл.Информация доступна только в двоичных файлах, созданных с поддержкой модулей.
Примечание: debug.ReadBuildInfo()
был добавлен только в Go 1.12 (выпущено всего день назад).
Пример получения и печати информации о сборке (рекурсивно).Проще всего выполнить JSON-маршалирование информации о сборке:
bi, ok := debug.ReadBuildInfo()
if !ok {
fmt.Println("Getting build info failed (not in module mode?)!")
return
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
if err := enc.Encode(bi); err != nil {
panic(err)
}
Пример вывода
Пример вывода для проекта с одной зависимостью: github.com/globalsign/mgo
).
Выполнениеgo list -m all
:
mytest
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8
Получение и JSON-маршалинг информации о сборке во время выполнения:
{
"Path": "mytest",
"Main": {
"Path": "mytest",
"Version": "(devel)",
"Sum": "",
"Replace": null
},
"Deps": [
{
"Path": "github.com/globalsign/mgo",
"Version": "v0.0.0-20181015135952-eeefdecb41b8",
"Sum": "h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=",
"Replace": null
}
]
}