Go (tiež známy ako Golang) je open-source, staticky typovaný programovací jazyk. Pôvodne ho vyvinula spoločnosť Google. Medzi významné vlastnosti jazyka Go patrí jednoduchosť, vysoký výkon, čitateľnosť a efektívnosť.
Podobne ako akýkoľvek iný významný programovací jazyk, aj štandardná knižnica jazyka Go ponúka bohatú sadu balíkov. Funkcionalitu však môžeme rozšíriť aj začlenením balíkov tretích strán. Tento návod ukáže importovanie balíkov a ich začlenenie do vašich projektov v Go.
Požiadavky
Na sledovanie tohto návodu budete musieť mať k dispozícii nasledujúce komponenty:
- Správne nakonfigurovaný server Ubuntu. Prečítajte si viac o konfigurácii vlastného servera Ubuntu na CloudSigma.
- Programovacie prostredie Go. Môžete použiť tento návod na inštaláciu Go na Ubuntu.
- Moderný textový editor, napríklad, Vim, Sublime Text, Atom, Visual Studio Code, Brackets, atď. Tento návod bude využívať Visual Studio Code .
Krok 1 – Inštalácia Go
Inštaláciu jadra programovacieho jazyka Go na Ubuntu 20.04 sme už rozoberali. Existuje však jednoduchšia alternatívna metóda: g (ľahký správca verzií Go).
Dôvod, prečo budeme používať g je ten, že žiadna z verzií Go dostupných v repozitároch balíkov Ubuntu alebo snap neobsahuje najnovšiu dostupnú verziu Go (v1.18 v čase písania tohto návodu). Vždy sa odporúča používať najnovšiu dostupnú verziu akéhokoľvek balíka programovacieho jazyka.
Nasledujúci príkaz spustí g inštalačný skript:
|
1 |
wget -qO- https://git.io/g-install | sh -s |


Aby sa zmeny prejavili, musíte reštartovať reláciu shellu. Po reštarte overte inštaláciu:
|
1 |
go version |
|
1 |
which go |

Po inštalácii Go sa tiež odporúča nainštalovať gopls . Je to oficiálny jazykový server pre Go. Je kompatibilný s mnohými textovými editormi ako VS Code, Vim, Emacs, Sublime Text, Atom a mnohými ďalšími. Spustite nasledujúci príkaz:
|
1 |
go install golang.org/x/tools/gopls@latest |
Naše programovacie prostredie Go je teraz pripravené.
Krok 2 – Vytvorenie ukážkového skriptu Go
Všetky kódy predvedené v tomto návode sa zmestia do jedného skriptu Go. Vytvorte ukážkový skript Go:
|
1 |
touch practice.go |
Po vykonaní zmien v skripte ho môžeme spustiť pomocou nasledujúceho príkazu Go:
|
1 |
go run practice.go |
Tu kompilátor Go spustí kód v režime interpreta.
Krok 3 – Používanie balíkov štandardnej knižnice
Go prichádza s obrovskou zbierkou vo svojej štandardnej knižnici. Skladá sa z mnohých balíkov, napríklad:
- fmt: Implementuje formátovaný vstup/výstup s funkciami analogickými k C ( printf a scanf ).
- http: Tento balík poskytuje funkcie na vytváranie webových služieb, odosielanie a prijímanie údajov cez http protokol, atď.
Na začlenenie akéhokoľvek balíka do projektu Go musí byť implementovaný pomocou príkazu import . Príkaz sa deklaruje kľúčovým slovom import spolu s názvami balíkov. Napríklad na importovanie math/rand by príkaz import vyzeral takto:
|
1 |
import "math/rand" |
Nasledujúci kód implementuje rôzne funkcie z balíka math/rand :
|
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)) } } |
Tento kód demonštruje jednoduchý cyklus for, ktorý na obrazovku vypíše 10 náhodných celých čísel (0 až 24). Tu:
- rand.Int() : Toto volanie funkcie vracia náhodné celé číslo.
- rand.Intn() : Funguje podobne ako rand.Int() , ale prijíma parameter, ktorý definuje rozsah pre náhodné celé čísla (od 0 po zadané číslo).
Ďalej spustite kód:
|
1 |
go run practice.go |
Výstup bude vyzerať takto:

Upozorňujeme, že výstup bude presne rovnaký, pretože počiatočná hodnota (seed) pre generátor náhodných čísel je predvolene pevná hodnota. Toto je prirodzená vlastnosť generátora pseudonáhodných čísel. Viac sa môžete dozvedieť o random seed tu.
Step 4 – Importing Multiple Packages
Väčšie a komplexnejšie projekty musia zahŕňať viacero balíkov. Ako ich importujete do svojho kódu v Go? Jednou z možností je použiť samostatné príkazy import pre každý importovaný balík. Tento prístup je však neefektívny v porovnaní s nasledujúcou štruktúrou importu:
|
1 2 3 4 5 6 7 8 9 |
import ( "<package_1>" "<package_2>" "<package_3>" ) |
Tu jeden príkaz import zahŕňa viacero balíkov súčasne. To znižuje množstvo kódu, ktorý je potrebné napísať, a zároveň zlepšuje čitateľnosť.
Nasledujúci kód uvádza túto funkciu do praxe:
|
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)) } } |
Spustite kód:
|
1 |
go run practice.go |
Výstup bude vyzerať približne takto:

Step 5 – Installing Additional Go Libraries
Štandardná knižnica Go obsahuje množstvo užitočných balíkov. Tie sú navrhnuté ako univerzálne. Umožňujú vývojárom vytvárať si vlastné balíky nad štandardnou knižnicou, aby vyhovovali ich špecifickým potrebám. Pozrite si oficiálnu databázu balíkov Go.
Čo ak potrebujete implementovať balík Go od tretej strany? Go sa dodáva s go install príkazom ( go get je zastaraný). Dokáže stiahnuť akýkoľvek balík Go od tretej strany z internetu.
Na demonštráciu nainštalujeme cobra-cli balík. Nasledujúci príkaz Go stiahne a nainštaluje potrebné súbory a integruje balík do systému knižníc Go:
|
1 |
go install github.com/spf13/cobra-cli@latest |

Binárny súbor cobra-cli by sa mal nachádzať na nasledujúcom mieste:
|
1 |
ls -l $GOPATH/bin |

Ostatné súbory balíka by sa mali nachádzať na nasledujúcom mieste:
|
1 |
ls -l $GOPATH/pkg/mod/github.com/spf13 |

Počnúc verziou Go v1.11 definujú moduly Go verziu balíka, ktorý chcete importovať. Podrobne je to vysvetlené tu: GitHub pre moduly Go.
Step 6 – Package Aliases
V rôznych situáciách môžete naraziť na konfliktné názvy balíkov medzi lokálnymi a importovanými balíkmi. V takom prípade môže kolíziu vyriešiť vytvorenie aliasu. Štruktúra aliasu vyzerá približne takto:
|
1 |
import <alias> "import_package_name" |
Upravme náš jednoduchý program v Go tak, aby zahŕňal fmt_alias ako alias pre balík 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)) } } |
Všimnite si, že namiesto použitia fmt.Printf() , používame alias balíka fmt_alias.Printf() .
Go však nie je k aliasom veľmi ústretové. Keď používate aliasy, aby ste sa vyhli kolízii názvov importov, odporúča sa vytvoriť alias pre najlokálnejší import alebo import špecifický pre projekt. Napríklad, ak chcete mať lokálny balík strings aj systémový balík strings , mali by ste vytvoriť alias pre lokálny balík, nie pre systémový balík.
Najlepším postupom je v prvom rade predchádzať kolíziám názvov.
Step 7 – Imports Formatting
Naučili sme sa deklarovať všetky importy pomocou jediného import príkazu. Čo ak by ste mali niekoľko importov? Napríklad:
|
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" ) |
Formátovanie importov usporadúva balíky do špecifického poradia, čo zlepšuje konzistentnosť kódu. Keďže iba triedi poradie importov, zabraňuje to aj náhodným commitom. Taktiež to predchádza zbytočným zmenám v kóde a mätúcim revíziám kódu.
Väčšina moderných editorov vám importy naformátuje automaticky. Prípadne budú podporovať goimports. V odvetví je bežnou praxou používať goimports namiesto manuálneho triedenia importov. Okrem toho goimports tiež odráža zmeny štýlu v kóde.
Takto môže vyzerať import blok po použití 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" ) |
Všimli ste si nejaký vzor?
- Všetky štandardné knižnice sú zoskupené ako prvé.
- Skupiny sú oddelené prázdnymi riadkami, čo zlepšuje čitateľnosť kódu.
Záverečné myšlienky
Importy v Go sú výkonnou funkciou, ktorá umožňuje volať funkcie, ktoré nie sú vstavané v Go. Hoci štandardná knižnica ponúka mnoho balíkov na všeobecné účely, Go podporuje aj balíky tretích strán. Táto príručka demonštruje importovanie vstavaných balíkov a balíkov tretích strán pre Go.
V tejto príručke sme naše programy v Go spúšťali pomocou interpreta. Kódy však môžete skompilovať do samostatných binárnych súborov pre lepší výkon. Viac informácií o kompilácii programov v Go nájdete tu. Ak sa chcete dozvedieť, ako nasadiť webovú aplikáciu v Go pomocou Nginx, pozrite si tento návod. Okrem toho si môžete pozrieť nášho sprievodcu, ktorý ukazuje, ako písať vlastné balíky v Go.
Ste vývojár v Go? CloudSigma ponúka podporu pre Go API pre bezproblémovú integráciu s vašimi projektmi.
Príjemnú prácu!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.