Heim >Backend-Entwicklung >Golang >Wie kann ich Modulversionen aus Go-Code abrufen?

Wie kann ich Modulversionen aus Go-Code abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-11-03 09:03:29889Durchsuche

How Can I Retrieve Module Versions from Within Go Code?

Modulversionen aus dem Go-Code abrufen

Die Go-Tools umfassen Modul- und Abhängigkeitsinformationen innerhalb der kompilierten Binärdatei. Die Funktion runtime/debug.ReadBuildInfo() nutzt diese Funktion und bietet eine Methode für den Zugriff auf diese Daten, während Ihre Anwendung ausgeführt wird. Es liefert ein Array mit Abhängigkeitsdetails, einschließlich Modulpfad und Versionsnummer.

Für jedes Modul oder jede Abhängigkeit enthält dieses Array eine debug.Module-Struktur, die unten detailliert beschrieben wird:

type Module struct {
    Path    string  // module path
    Version string  // module version
    Sum     string  // checksum
    Replace *Module // replaced by this module
}

An Veranschaulichen Sie diesen Prozess:

package main

import (
    "fmt"
    "log"
    "runtime/debug"

    "github.com/icza/bitio"
)

func main() {
    _ = bitio.NewReader
    bi, ok := debug.ReadBuildInfo()
    if !ok {
        log.Printf("Failed to read build info")
        return
    }

    for _, dep := range bi.Deps {
        fmt.Printf("Dep: %+v\n", dep)
    }
}

Bei Ausführung auf dem Go Playground ergibt sich die folgende Ausgabe:

Dep: &{Path:github.com/icza/bitio Version:v1.0.0 Sum:h1:squ/m1SHyFeCA6+6Gyol1AxV9nmPPlJFT8c2vKdj3U8= Replace:<nil>}

Weitere Einblicke finden Sie in der entsprechenden Frage: So erhalten Sie einen detaillierten Go-Build Protokolle, zusammen mit allen Paketen, die im GOPATH- und „Go-Modul“-Modus verwendet werden?

Das obige ist der detaillierte Inhalt vonWie kann ich Modulversionen aus Go-Code abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn