Извлечение версий модуля из кода в Go
В Go пакет времени выполнения/отладки предоставляет доступ к подробной информации о зависимостях и модулях программы . Эта функция позволяет получать и отображать версии модулей из кода.
Функция debug.ReadBuildInfo() возвращает структуру BuildInfo, содержащую список всех импортированных зависимостей. Каждый модуль или зависимость представлены структурой Module, которая включает следующие поля:
Чтобы получить и отобразить версии модуля, вы можете использовать такой код:
package main
import (
"fmt"
"log"
"runtime/debug"
)
func main() {
bi, ok := debug.ReadBuildInfo()
if !ok {
log.Printf("Failed to read build info")
return
}
for _, dep := range bi.Deps {
fmt.Printf("Module: %s, Version: %s\n", dep.Path, dep.Version)
}
}
В этом примере информация о модуле и зависимостях загружается в структуру BuildInfo и выполняется итерация по зависимостям, распечатывая их пути и версии. Вы можете изменить этот код для отображения информации в желаемом формате, как в примере в вопросе.
Этот подход позволяет избежать необходимости использования ldflags для внешней установки версий. Вместо этого он полагается на информацию, предоставленную самим Go, что делает его надежным и масштабируемым решением для управления версиями модулей.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3