Zurück zum Blog

Wie man Pakete in Go importiert

Wie man Pakete in Go importiert

Go (auch bekannt als Golang) ist eine quelloffene, statisch typisierte Programmiersprache. Sie wurde ursprünglich von Google entwickelt. Zu den bemerkenswerten Eigenschaften von Go gehören Einfachheit, hohe Leistung, Lesbarkeit und Effizienz.

Wie jede andere bekannte Programmiersprache bietet auch die Standardbibliothek von Go eine reichhaltige Auswahl an Paketen. Wir können die Funktionalitäten jedoch auch durch die Einbindung von Drittanbieter-Paketen erweitern. Diese Anleitung wird zeigen, wie Sie Pakete importieren und in Ihre Go-Projekte einbinden.

Voraussetzungen

Um dieser Anleitung zu folgen, müssen Ihnen die folgenden Komponenten zur Verfügung stehen:

Schritt 1 – Installation von Go

Wir haben bereits über die Installation der Kernkomponente Go-Programmiersprache auf Ubuntu 20.04 gesprochen. Es gibt jedoch eine einfachere alternative Methode: g  (ein leichtgewichtiger Go-Versionsmanager).

Der Grund, warum wir g  verwenden werden, ist, dass weder die in den Ubuntu-Paketquellen noch die über Snap verfügbaren Go-Versionen die neueste verfügbare Go-Version enthalten (v1.18 zum Zeitpunkt der Erstellung dieser Anleitung). Es wird immer empfohlen, die neueste verfügbare Version eines Programmiersprachenpakets zu verwenden.

Der folgende Befehl führt das Installationsskript für g  aus:

Import Packages in Go install go

Import Packages in Go installing go 2

Damit die Änderungen wirksam werden, müssen Sie die Shell-Sitzung neu starten. Überprüfen Sie nach dem Neustart die Installation:

Import Packages in Go check go version

Nach der Installation von Go wird außerdem empfohlen, gopls  zu installieren. Dies ist der offizielle Go-Language-Server. Er ist mit vielen Texteditoren wie VS Code, Vim, Emacs, Sublime Text, Atom und vielen anderen kompatibel. Führen Sie den folgenden Befehl aus:

Unsere Go-Programmierumgebung ist jetzt bereit.

Schritt 2 – Erstellen eines Go-Beispielskripts

Der gesamte in dieser Anleitung gezeigte Code passt in ein einziges Go-Skript. Erstellen Sie ein Go-Beispielskript:

Nachdem Sie Änderungen am Skript vorgenommen haben, können Sie es mit dem folgenden Go-Befehl ausführen:

Hier führt der Go-Compiler den Code im Interpreter-Modus aus.

Schritt 3 – Verwendung von Standardbibliotheks-Paketen

Go bringt eine riesige Sammlung in seiner Standardbibliothek mit. Sie besteht aus zahlreichen Paketen, zum Beispiel:

  • fmt: Implementiert formatierte E/A mit Funktionen analog zu C ( printf  und scanf ).
  • http: Dieses Paket bietet Funktionen zum Erstellen von Webdiensten, zum Senden und Empfangen von Daten über das http -Protokoll usw.

Um ein Paket in ein Go-Projekt einzubinden, muss es mit der import-Anweisung implementiert werden. Die Anweisung wird durch das Schlüsselwort import zusammen mit den Namen der Pakete deklariert. Um beispielsweise math/rand zu importieren, würde die Import-Anweisung so aussehen:

Der folgende Code implementiert verschiedene Funktionen aus dem Paket math/rand:

Dieser Code zeigt eine einfache for-Schleife, die 10 Zufallszahlen (0 bis 24) auf dem Bildschirm ausgibt. Hierbei gilt:

  • rand.Int() : Dieser Funktionsaufruf gibt eine zufällige Ganzzahl zurück.
  • rand.Intn() : Verhält sich ähnlich wie rand.Int() , akzeptiert jedoch einen Parameter, der den Bereich für die Zufallszahlen definiert (von 0 bis zur angegebenen Zahl).

Führen Sie als Nächstes den Code aus:

Die Ausgabe wird wie folgt aussehen:

random number program

Beachten Sie, dass die Ausgabe genau dieselbe sein wird, da der Startwert (Seed) für den Zufallszahlengenerator standardmäßig ein fester Wert ist. Dies liegt in der Natur eines Pseudorandom-Nummern-Generators. Sie können hier mehr über Random Seeds erfahren.

Step 4 – Importieren mehrerer Pakete

Größere und komplexere Projekte müssen mehrere Pakete einbinden. Wie importiert man diese in den Go-Code? Eine gültige Option ist die Verwendung einzelner Import-Anweisungen für jedes importierte Paket. Dieser Ansatz ist jedoch im Vergleich zur folgenden Importstruktur ineffizient:

Hier bindet eine einzige Import-Anweisung mehrere Pakete gleichzeitig ein. Dies reduziert die Menge des zu schreibenden Codes und verbessert gleichzeitig die Lesbarkeit.

Der folgende Code setzt diese Funktion in die Praxis um:

Führen Sie den Code aus:

Die Ausgabe wird in etwa so aussehen:

importing multiple packages

Step 5 – Installieren zusätzlicher Go-Bibliotheken

Die Standardbibliothek von Go wird mit zahlreichen nützlichen Paketen ausgeliefert. Diese sind vom Konzept her universell einsetzbar. Sie ermöglicht es Entwicklern, eigene Pakete auf der Standardbibliothek aufzubauen, um ihre spezifischen Anforderungen zu erfüllen. Schauen Sie sich die offizielle Go-Paketdatenbank an.

Was ist, wenn Sie ein Go-Paket eines Drittanbieters implementieren müssen? Go wird mit dem Befehl go install  ausgeliefert ( go get  ist veraltet). Er kann jedes Go-Paket eines Drittanbieters aus dem Internet abrufen.

Zur Demonstration werden wir das Paket cobra-cli  installieren. Der folgende Go-Befehl lädt die erforderlichen Dateien herunter, installiert sie und integriert das Paket in das Go-Bibliothekssystem:

install cobra cli

Die Binärdatei von cobra-cli  sollte sich an folgendem Ort befinden:

list gopath files

Die anderen Paketdateien sollten sich an folgendem Ort befinden:

list package files

Ab Go v1.11 definieren Go-Module die Version des Pakets, das Sie importieren möchten. Dies wird hier im Detail erklärt: Go-Module GitHub.

Step 6 – Paket-Aliase

In verschiedenen Situationen kann es zu Namenskonflikten zwischen lokalen und importierten Paketen kommen. Hier kann die Verwendung von Aliasen den Konflikt lösen. Die Alias-Struktur sieht in etwa so aus:

Lassen Sie uns unser einfaches Go-Programm so ändern, dass es fmt_alias  als Alias für das Paket fmt :

Beachten Sie, dass wir anstelle von fmt.Printf() , den Paket-Alias fmt_alias.Printf() .

Go ist jedoch nicht besonders aufgeschlossen gegenüber Aliasen. Wenn Sie Aliase verwenden, um Namenskollisionen beim Import zu vermeiden, wird empfohlen, dem lokalsten oder projektspezifischsten Import einen Alias zuzuweisen. Wenn Sie beispielsweise sowohl ein lokales Paket strings  als auch ein Systempaket strings  haben möchten, sollten Sie dem lokalen Paket einen Alias zuweisen, nicht dem Systempaket.

Die beste Praxis ist es, Namenskollisionen von vornherein zu vermeiden.

Step 7 – Formatierung von Importen

Wir haben gelernt, alle Importe mit einer einzigen import -Anweisung zu deklarieren. Was wäre, wenn Sie mehrere Importe hätten? Zum Beispiel:

Die Formatierung von Imports sortiert die Pakete in eine bestimmte Reihenfolge, was die Konsistenz des Codes verbessert. Da sie nur die Reihenfolge der Imports sortiert, verhindert sie auch zufällige Commits. Zudem beugt sie unnötigen Code-Änderungen (Code Churn) und unübersichtlichen Code-Reviews vor.

Die meisten modernen Editoren formatieren die Imports automatisch für Sie. Alternativ unterstützen sie goimports. Es ist in der Branche eine gängige Praxis, goimports  zu verwenden, anstatt die Imports manuell zu sortieren. Darüber hinaus goimports  spiegelt auch Stiländerungen im Code wider.

So sieht der import -Block nach dem Anwenden von goimports aus :

Fällt Ihnen ein Muster auf?

  • Alle Standardbibliotheken werden zuerst gruppiert.
  • Die Gruppen sind durch Leerzeilen getrennt, was die Lesbarkeit des Codes verbessert.

Fazit

Imports in Go sind eine leistungsstarke Funktion, die es ermöglicht, Funktionen aufzurufen, die nicht in Go integriert sind. Während die Standardbibliothek viele Allzweck-Pakete bietet, unterstützt Go auch Pakete von Drittanbietern. Diese Anleitung zeigt das Importieren von integrierten Go-Paketen und Paketen von Drittanbietern.

In dieser Anleitung haben wir unsere Go-Programme mit dem Interpreter ausgeführt. Sie können den Code jedoch für eine bessere Leistung in eigenständige Binärdateien kompilieren. Mehr über das Kompilieren von Go-Programmen erfahren Sie hier. Wenn Sie lernen möchten, wie Sie eine Go-Webanwendung mit Nginx bereitstellen, finden Sie in diesem Tutorial. Darüber hinaus können Sie einen Blick auf unseren Leitfaden werfen, der zeigt, wie Sie Ihre eigenen Go-Pakete schreiben.

Sind Sie Go-Entwickler? CloudSigma bietet Go-API-Unterstützung für eine nahtlose Integration in Ihre Projekte.

Frohes Schaffen!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.