Go (ook bekend als Golang) is een open-source, statisch getypeerde programmeertaal. Het is oorspronkelijk ontwikkeld door Google. Enkele opvallende kenmerken van Go zijn eenvoud, hoge prestaties, leesbaarheid en efficiëntie.
Net als elke andere prominente programmeertaal biedt de standaardbibliotheek van Go een rijke verzameling pakketten. We kunnen de functionaliteiten echter ook uitbreiden door pakketten van derden te integreren. Deze gids zal demonstreren hoe u pakketten importeert en deze integreert in uw Go-projecten.
Vereisten
Om deze gids te volgen, moet u de volgende componenten tot uw beschikking hebben:
- Een correct geconfigureerde Ubuntu-server. Lees meer over het configureren van uw eigen Ubuntu-server op CloudSigma.
- De Go-programmeeromgeving. U kunt deze gids gebruiken voor het installeren van Go op Ubuntu.
- Een moderne teksteditor, bijvoorbeeld Vim, Sublime Text, Atom, Visual Studio Code, Brackets, enz. In deze gids gebruiken we Visual Studio Code .
Step 1 – Go installeren
We hebben het installeren van de basis Go-programmeertaal op Ubuntu 20.04 al besproken. Er is echter een eenvoudiger alternatieve methode: g (een lichtgewicht Go-versiebeheerder).
De reden dat we g gaan gebruiken, is dat geen van de Go-versies die beschikbaar zijn in de pakketbronnen van Ubuntu of snap de nieuwste beschikbare Go-versie bevat (v1.18 op het moment van schrijven van deze gids). Het wordt altijd aanbevolen om de nieuwste beschikbare versie van een programmeertaalpakket te gebruiken.
Het volgende commando voert het g -installatiescript uit:
|
1 |
wget -qO- https://git.io/g-install | sh -s |


Om de wijzigingen door te voeren, moet u de shell-sessie herstarten. Controleer na het herstarten de installatie:
|
1 |
go version |
|
1 |
which go |

Na het installeren van Go wordt het ook aanbevolen om gopls te installeren. Dit is de officiële Go-taalserver. Deze is compatibel met veel teksteditors zoals VS Code, Vim, Emacs, Sublime Text, Atom en nog veel meer. Voer het volgende commando uit:
|
1 |
go install golang.org/x/tools/gopls@latest |
Onze Go-programmeeromgeving is nu klaar.
Step 2 – Een voorbeeld-Go-script maken
Alle codes die in deze gids worden gedemonstreerd, passen in één enkel Go-script. Maak een voorbeeld-Go-script:
|
1 |
touch practice.go |
Na het aanbrengen van wijzigingen in het script kunnen we het uitvoeren met het volgende Go-commando:
|
1 |
go run practice.go |
Hier zal de Go-compiler de code in interpreter-modus uitvoeren.
Step 3 – Standaardbibliotheekpakketten gebruiken
Go wordt geleverd met een enorme verzameling in zijn standaardbibliotheek. Deze bestaat uit talrijke pakketten, bijvoorbeeld:
- fmt: Implementeert geformatteerde I/O met functies analoog aan C ( printf en scanf ).
- http: Dit pakket biedt functies voor het maken van webdiensten, het verzenden en ophalen van gegevens via het http -protocol, enz.
Om een pakket in een Go-project te integreren, moet het worden geïmplementeerd met behulp van de import -instructie. De instructie wordt gedeclareerd door het import -sleutelwoord samen met de namen van de pakketten. Bijvoorbeeld, om math/rand te importeren, zou de import-instructie er als volgt uitzien:
|
1 |
import "math/rand" |
De volgende code implementeert verschillende functies uit het math/rand -pakket:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package main import "math/rand" func main() { for i := 0; i < 10; i++ { println(rand.Intn(25)) } } |
Deze code demonstreert een eenvoudige for-lus die 10 willekeurige gehele getallen (0 tot 24) op het scherm afdrukt. Hier:
- rand.Int() : Deze functie-aanroep retourneert een willekeurig geheel getal.
- rand.Intn() : Werkt vergelijkbaar met rand.Int() maar accepteert een parameter die het bereik voor willekeurige gehele getallen definieert (van 0 tot het opgegeven getal).
Voer vervolgens de code uit:
|
1 |
go run practice.go |
De uitvoer zal er als volgt uitzien:

Merk op dat de uitvoer precies hetzelfde zal zijn, aangezien de seed voor de generator van willekeurige getallen standaard een vaste waarde is. Dit is de aard van een pseudorandom getallengenerator. Je kunt hier meer leren over random seed.
Step 4 – Meerdere pakketten importeren
Grotere en complexere projecten moeten meerdere pakketten bevatten. Hoe importeer je deze in je Go-code? Een geldige optie is om afzonderlijke import-statements te gebruiken voor elk geïmporteerd pakket. Deze aanpak is echter inefficiënt vergeleken met de volgende importstructuur:
|
1 2 3 4 5 6 7 8 9 |
import ( "<package_1>" "<package_2>" "<package_3>" ) |
Hier bevat een enkel import-statement meerdere pakketten tegelijkertijd. Dit vermindert de hoeveelheid code die geschreven moet worden en verbetert de leesbaarheid.
De volgende code brengt deze functie in de praktijk:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( "fmt" "math/rand" ) func main() { for i := 0; i < 10; i++ { fmt.Printf("%d) %d\n", i, rand.Intn(25)) } } |
Voer de code uit:
|
1 |
go run practice.go |
De uitvoer zal er ongeveer zo uitzien:

Step 5 – Extra Go-bibliotheken installeren
De standaardbibliotheek van Go wordt geleverd met tal van nuttige pakketten. Deze zijn ontworpen voor algemeen gebruik. Het stelt ontwikkelaars in staat om hun eigen pakketten te bouwen bovenop de standaardbibliotheek om aan hun specifieke behoeften te voldoen. Bekijk de officiële Go-pakketdatabase.
Wat als je een Go-pakket van een derde partij moet implementeren? Go wordt geleverd met het go install -commando ( go get is verouderd). Het kan elk Go-pakket van derden van het internet ophalen.
Ter demonstratie gaan we het cobra-cli -pakket installeren. Het volgende Go-commando downloadt en installeert de benodigde bestanden en integreert het pakket in het Go-bibliotheeksysteem:
|
1 |
go install github.com/spf13/cobra-cli@latest |

Het binaire bestand van cobra-cli zou zich op de volgende locatie moeten bevinden:
|
1 |
ls -l $GOPATH/bin |

De andere pakketbestanden zouden zich op de volgende locatie moeten bevinden:
|
1 |
ls -l $GOPATH/pkg/mod/github.com/spf13 |

Vanaf Go v1.11 definiëren Go-modules de versie van het pakket dat je wilt importeren. Dit wordt hier in detail uitgelegd: Go Modules GitHub.
Step 6 – Pakket-aliassen
In verschillende situaties kun je conflicterende pakketnamen tegenkomen tussen de lokale en de geïmporteerde pakketten. Dit is waar aliasing de botsing kan oplossen. De aliasingstructuur ziet er ongeveer zo uit:
|
1 |
import <alias> "import_package_name" |
Laten we ons eenvoudige Go-programma aanpassen om fmt_alias op te nemen als een alias voor het pakket fmt :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( fmt_alias "fmt" "math/rand" ) func main() { for i := 0; i < 10; i++ { fmt_alias.Printf("%d) %d\n", i, rand.Intn(25)) } } |
Merk op dat we in plaats van fmt.Printf() , de pakket-alias fmt_alias.Printf() .
Go is echter niet zo gastvrij voor aliassen. Wanneer je aliassen gebruikt om botsingen tussen importnamen te voorkomen, wordt aangeraden om de meest lokale of projectspecifieke import een alias te geven. Als je bijvoorbeeld zowel een lokaal pakket strings and a system package strings , dan moet je het lokale pakket een alias geven, niet het systeempakket.
De beste praktijk is om naamconflicten in de eerste plaats te vermijden.
Step 7 – Opmaak van imports
We hebben geleerd om alle imports te declareren met een enkel import -statement. Wat als je meerdere imports had? Bijvoorbeeld:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import ( "fmt" "os" "github.com/example/foo" "github.com/example/bar" "math/rand" "github.com/abc/pqr/xyz" ) |
Het formatteren van imports sorteert de pakketten in een specifieke volgorde, wat de consistentie van de code verbetert. Omdat het alleen de volgorde van de imports sorteert, voorkomt het ook onnodige commits. Het voorkomt ook onnodige codewijzigingen en verwarrende codebeoordelingen.
De meeste moderne editors formatteren de imports automatisch voor je. Als alternatief ondersteunen ze goimports. Het’s een gangbare praktijk in de sector om goimports te gebruiken in plaats van de imports handmatig te sorteren. Daarnaast weerspiegelt goimports ook stijlveranderingen in de code.
Dit is hoe het import -blok eruit kan zien na het toepassen van goimports :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import ( fmt_alias "fmt" "math/rand" "os" "github.com/example/foo" "github.com/example/bar" "github.com/abc/pqr/xyz" ) |
Valt er een patroon op?
- Alle standaardbibliotheken zijn als eerste gegroepeerd.
- De groepen zijn gescheiden door lege regels, wat de leesbaarheid van de code verbetert.
Tot slot
Imports in Go is een krachtige functie waarmee functies kunnen worden aangeroepen die niet in Go zijn ingebouwd. Hoewel de standaardbibliotheek veel pakketten voor algemeen gebruik biedt, ondersteunt Go ook pakketten van derden. Deze gids laat zien hoe je ingebouwde Go-pakketten en Go-pakketten van derden importeert.
In deze gids hebben we onze Go-programma's uitgevoerd met behulp van de interpreter. Je kunt de code echter compileren naar zelfstandige binaire bestanden voor betere prestaties. Je kunt meer lezen over het compileren van Go-programma's hier. Als je wilt leren hoe je een Go-webapplicatie implementeert met Nginx, bekijk dan deze handleiding. Daarnaast kun je een kijkje nemen in onze gids die laat zien hoe je je eigen Go-pakketten schrijft.
Ben je een Go-ontwikkelaar? CloudSigma biedt ondersteuning voor de Go-API voor een naadloze integratie met je projecten.
Veel plezier met programmeren!
Reacties
Nog geen reacties. Wees de eerste.