Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendung von Go-Modulen

Detaillierte Erläuterung der Verwendung von Go-Modulen

尚
nach vorne
2020-01-04 16:59:562358Durchsuche

Detaillierte Erläuterung der Verwendung von Go-Modulen

Einführung in Go-Module

Module ist eine neue experimentelle Funktion in Go 1.11, die auf Basis von vgo weiterentwickelt wurde und ein neues Paketverwaltungstool ist.

Paketverwaltungstools vor Go 1.11 basierten alle auf PATH oder Herstellerverzeichnissen, was das Problem der Abhängigkeit von verschiedenen Versionen nicht sehr gut lösen konnte. Modules ist eine neue Paketverwaltungsmethode außerhalb von GOPATH. Durch die Verwendung von Modulen ist es völlig unabhängig von GOPATH.

Hinweis: Go Modules erfordert Go 1.11 oder höher

Nutzungsanleitung

Beispiel

1. Erstellen Sie ein Verzeichnis außerhalb von GOPATH

$ mkdir -p /tmp/scratchpad/hello
$ cd /tmp/scratchpad/hello

2. Modul initialisieren

$ go mod init github.com/you/hello
go: creating new go.mod: module github.com/you/hello

3. Hallo.go bearbeiten

package main
import (
    "fmt"
    "rsc.io/quote"
)
func main() {
    fmt.Println(quote.Hello())
}

4. Kompilieren und ausführen

$ go build
$ ./hello
Hello, world.

Hinweis: go build lädt automatisch Abhängigkeitspakete herunter, während golang Pakete wie Da .org/x/... die Firewall umgehen muss, können Sie die Umgebungsvariable GOPROXY hinzufügen, um den Proxy festzulegen:

export GOPROXY=https://goproxy.io

Zu diesem Zeitpunkt wird die Datei go.mod automatisch aktualisiert und enthält die vom Projekt benötigten Abhängigkeiten und die entsprechende Versionsnummer

$ cat go.mod
module github.com/you/hello
require rsc.io/quote v1.5.2

Zusätzlich zu go.mod verwaltet go auch eine Datei namens go.sum, die den erwarteten Hashwert für eine bestimmte Modulversion enthält:

cat go.sum
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:qgOY6WgZOaTkIIMiVjBQcw93ERBE4m30iBm00nkL0i8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

go verwendet die Datei go.sum, um sicherzustellen, dass zukünftige Downloads dieser Module mit dem ersten Download identisch sind, sodass keine unerwarteten Änderungen an den Modulen auftreten, von denen Ihr Projekt abhängt.
Sowohl go.mod als auch go.sum sollten in die Versionskontrolle eingecheckt werden.

Täglicher Arbeitsablauf

Ein typischer täglicher Arbeitsablauf könnte wie folgt aussehen:

Importanweisungen im .go-Code nach Bedarf hinzufügen

Standard Befehle (z. B. go build oder go test) fügen bei Bedarf automatisch neue Abhängigkeiten hinzu (aktualisieren Sie go.mod und laden Sie neue Abhängigkeiten herunter)

Wenn eine bestimmte Version erforderlich ist, können Sie mit go get eine bestimmte Version angeben Zum Beispiel go get foo@v1.2.3, go get foo@master, go get foo@e3702bed2 oder direkt die Datei go.mod bearbeiten

Allgemeine Befehle:

go list -m all Alle direkten und indirekten Abhängigkeiten im Projekt anzeigen

Go Mod Tidy Löschen Sie ungenutzte Abhängigkeiten und fügen Sie andere erforderliche Abhängigkeiten hinzu

Go Mod Vendor Abhängigkeiten in das Anbieterverzeichnis kopieren

Weitere Informationen zu Go Wenn Sie über Sprachkenntnisse verfügen, beachten Sie bitte die Spalte Go Language Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Go-Modulen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen