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

Detaillierte Erläuterung der Verwendung von Go-Modulen

Freigeben: 2020-01-04 16:59:56
nach vorne
2386 Leute haben es durchsucht

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
Nach dem Login kopieren

2. Modul initialisieren

$ go mod init github.com/you/hello
go: creating new go.mod: module github.com/you/hello
Nach dem Login kopieren

3. Hallo.go bearbeiten

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

4. Kompilieren und ausführen

$ go build
$ ./hello
Hello, world.
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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=
Nach dem Login kopieren

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!

Verwandte Etiketten:
go
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage