package katalog
import "golang.org/x/text/unicode/norm"
type Fahrzeug struct {
Name string
}
func normalisiereEingabe(eingabe string) string {
return norm.NFC.String(eingabe)
}
Module
Go Module (modules) bezeichnet eine Art der Paketverwaltung. Ein Paket kann ein Modul sein, Teil eines Moduls sein oder unabhängig davon existieren. Module können andere Module laden.
Ich fange mit einem Beispiel an: in einem Verzeichnis katalog
wird die Datei katalog.go
mit folgendem Inhalt erstellt.
package katalog
type Fahrzeug struct {
Name string
}
Damit existiert das Paket katalog
. Jetzt kann man ein Modul mit irgendeinem Namen erstellen, ich nutze der Einfachheit halber denselben Namen.
Dazu muss man go mod init
aufrufen in dem Paket-Verzeichnis aufrufen:
go mod init katalog
Das erstellt eine Datei mit dem Namen go.mod
:
module katalog
go 1.15
Die Verzeichnisstruktur sieht nun wie folgt aus:
.
└── katalog
├── go.mod
└── katalog.go
Bis hier her gibt es keinen sinnvollen Vorteil gegenüber der Paketstruktur. Interessant wird es, wenn das Paket andere Module nutzt:
Anschließend ändert man die Datei go.mod
per Hand oder mit dem Befehl go mod tidy
, um die Abhängigkeit einzutragen:
module fahrzeugliste
go 1.15
require golang.org/x/text v0.3.4
go.mod
. Hier ist nicht nur das geladene Modul, sondern die gewünschte Versionsnummer angegeben (v0.0.0 für die neuste Version)Neben der Datei go.mod
wird auch die Datei go.sum
erstellt, die die Prüfsummen der Module enthält, damit man sichergehen kann, immer die gewünschten Dateien zu benutzen.
golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
go.sum
enthält Prüfsummen der benutzten Module, damit die Integrität sichergestellt ist. Diese Datei wird mit go mod tidy
aktualisiert.Die Abhängigkeiten (in diesem Fall golang.org/x/text
) werden nun vom System automatisch in der gewünschten Version herunter geladen.