«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу получить версии модулей из кода в Go?

Как я могу получить версии модулей из кода в Go?

Опубликовано 9 ноября 2024 г.
Просматривать:500

How Can I Retrieve Module Versions from Code in Go?

Извлечение версий модуля из кода в Go

В Go пакет времени выполнения/отладки предоставляет доступ к подробной информации о зависимостях и модулях программы . Эта функция позволяет получать и отображать версии модулей из кода.

Функция debug.ReadBuildInfo() возвращает структуру BuildInfo, содержащую список всех импортированных зависимостей. Каждый модуль или зависимость представлены структурой Module, которая включает следующие поля:

  • Path: путь импорта модуля.
  • Version: версия модуля.
  • Sum: контрольная сумма кода модуля.
  • Replace: модуль, который заменяет этот, если любой.

Чтобы получить и отобразить версии модуля, вы можете использовать такой код:

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