Go (také známý jako Golang) je open-source, staticky typovaný programovací jazyk. Původně byl vyvinut společností Google. Mezi významné vlastnosti jazyka Go patří jednoduchost, vysoký výkon, čitelnost a efektivita.
Stejně jako u jiných významných programovacích jazyků nabízí standardní knihovna Go bohatou sadu balíčků. Jeho funkce však můžeme také rozšířit začleněním balíčků třetích stran. Tento průvodce ukáže importování balíčků a jejich začlenění do vašich projektů v Go.
Požadavky
Chcete-li postupovat podle tohoto průvodce, budete muset mít k dispozici následující komponenty:
- Správně nakonfigurovaný server Ubuntu. Zjistěte více o konfiguraci vlastního serveru Ubuntu na CloudSigma.
- Programovací prostředí Go. Můžete použít tohoto průvodce pro instalaci Go na Ubuntu.
- Moderní textový editor, například Vim, Sublime Text, Atom, Visual Studio Code, Brackets, atd. Tento průvodce bude využívat Visual Studio Code .
Step 1 – Instalace Go
Již jsme diskutovali o instalaci jádra programovacího jazyka Go na Ubuntu 20.04. Existuje však snazší alternativní metoda: g (lehký správce verzí Go).
Důvod, proč budeme používat g je ten, že žádná z verzí Go dostupných z balíčkových repozitářů Ubuntu nebo snapu neobsahuje nejnovější dostupnou verzi Go (v1.18 v době psaní tohoto průvodce). Vždy se doporučuje používat nejnovější dostupnou verzi jakéhokoli balíčku programovacího jazyka.
Následující příkaz spustí g instalační skript:
|
1 |
wget -qO- https://git.io/g-install | sh -s |


Aby se změny projevily, musíte restartovat relaci shellu. Po restartu ověřte instalaci:
|
1 |
go version |
|
1 |
which go |

Po instalaci Go se také doporučuje nainstalovat gopls . Je to oficiální jazykový server pro Go. Je kompatibilní s mnoha textovými editory jako VS Code, Vim, Emacs, Sublime Text, Atom a mnoha dalšími. Spusťte následující příkaz:
|
1 |
go install golang.org/x/tools/gopls@latest |
Naše programovací prostředí Go je nyní připraveno.
Step 2 – Vytvoření ukázkového skriptu v Go
Všechny kódy předvedené v tomto průvodci se vejdou do jediného skriptu v Go. Vytvořte ukázkový skript v Go:
|
1 |
touch practice.go |
Po provedení změn ve skriptu jej můžeme spustit pomocí následujícího příkazu Go:
|
1 |
go run practice.go |
Zde kompilátor Go spustí kód v režimu interpretu.
Step 3 – Použití balíčků standardní knihovny
Go přichází s obrovskou kolekcí ve své standardní knihovně. Skládá se z mnoha balíčků, například:
- fmt: Implementuje formátovaný I/O s funkcemi analogickými k C ( printf a scanf ).
- http: Tento balíček poskytuje funkce pro vytváření webových služeb, odesílání a načítání dat přes http protokol, atd.
Chcete-li začlenit jakýkoli balíček do projektu v Go, musí být implementován pomocí příkazu import . Tento příkaz se deklaruje klíčovým slovem import spolu s názvy balíčků. Například pro import math/rand by příkaz import vypadal takto:
|
1 |
import "math/rand" |
Následující kód implementuje různé funkce z balíčku 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 ukazuje jednoduchou smyčku for, která na obrazovku vypíše 10 náhodných celých čísel (0 až 24). Zde:
- rand.Int() : Toto volání funkce vrací náhodné celé číslo.
- rand.Intn() : Funguje podobně jako rand.Int() , ale přijímá parametr, který definuje rozsah pro náhodná celá čísla (od 0 do zadaného čísla).
Dále spusťte kód:
|
1 |
go run practice.go |
Výstup bude vypadat takto:

Všimněte si, že výstup bude přesně stejný, protože seed pro generátor náhodných čísel je ve výchozím nastavení pevná hodnota. To je přirozená vlastnost generátoru pseudonáhodných čísel. Více se můžete dozvědět o náhodném seedu zde.
Krok 4 – Importování více balíčků
Větší a složitější projekty vyžadují začlenění více balíčků. Jak je importujete do svého kódu v Go? Jednou z možností je použít samostatné příkazy import pro každý importovaný balíček. Tento přístup je však neefektivní ve srovnání s následující strukturou importu:
|
1 2 3 4 5 6 7 8 9 |
import ( "<package_1>" "<package_2>" "<package_3>" ) |
Zde jediný příkaz import začleňuje více balíčků současně. To snižuje množství kódu, který je nutné napsat, a zároveň zlepšuje čitelnost.
Následující kód uvádí tuto funkci 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)) } } |
Spusťte kód:
|
1 |
go run practice.go |
Výstup bude vypadat nějak takto:

Krok 5 – Instalace dalších knihoven Go
Standardní knihovna Go se dodává s mnoha užitečnými balíčky. Ty jsou ze své podstaty univerzální. Umožňuje vývojářům vytvářet vlastní balíčky nad standardní knihovnou, aby vyhovovaly jejich specifickým potřebám. Podívejte se na oficiální databázi balíčků Go.
What if you need to implement a third-party Go package? Go ships with the go install command ( go get is deprecated). It can grab any third-party Go package from the internet.
For demonstration, we are going to install the cobra-cli package. The following Go command will download and install the necessary files and integrate the package into the Go library system:
|
1 |
go install github.com/spf13/cobra-cli@latest |

The binary of cobra-cli should be located at the following location:
|
1 |
ls -l $GOPATH/bin |

The other package files should be located at the following location:
|
1 |
ls -l $GOPATH/pkg/mod/github.com/spf13 |

Starting from Go v1.11, Go modules define the version of the package you wish to import. This is explained in detail here: Go Modules GitHub.
Krok 6 – Aliasy balíčků
V různých situacích můžete narazit na konfliktní názvy balíčků mezi lokálními a importovanými balíčky. Zde může kolizi vyřešit použití aliasů. Struktura aliasů vypadá nějak takto:
|
1 |
import <alias> "import_package_name" |
Upravme náš jednoduchý program v Go tak, aby začlenil fmt_alias jako alias pro balíček 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šimněte si, že místo použití fmt.Printf() , používáme alias balíčku fmt_alias.Printf() .
Go však aliasům příliš nepřeje. Pokud používáte aliasy, abyste se vyhnuli kolizi názvů importů, doporučuje se vytvořit alias pro nejvíce lokální import nebo import specifický pro projekt. Pokud například chcete mít jak lokální balíček strings , tak systémový balíček strings , měli byste vytvořit alias pro lokální balíček, nikoli pro systémový balíček.
Nejlepším postupem je kolizím názvů v první řadě předcházet.
Krok 7 – Formátování importů
Naučili jsme se deklarovat všechny importy pomocí jediného příkazu import . Co kdybyste měli několik importů? Napří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átování importů řadí balíčky do specifického pořadí, což zlepšuje konzistenci kódu. Vzhledem k tomu, že pouze řadí pořadí importů, zabraňuje také náhodným commitům. Předchází také zbytečnému přepisování kódu a nepřehledným revizím kódu.
Většina moderních editorů naformátuje importy automaticky za vás. Případně budou podporovat goimports. V oboru je běžnou praxí používat goimports namísto ručního řazení importů. Navíc goimports také odráží změny stylu v kódu.
Zde je ukázka toho, jak může import blok vypadat 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 jste si nějakého vzorce?
- Všechny standardní knihovny jsou seskupeny jako první.
- Skupiny jsou odděleny prázdnými řádky, což zlepšuje čitelnost kódu.
Závěrečné myšlenky
Importy v Go jsou mocnou funkcí, která umožňuje volat funkce, které nejsou součástí Go. Zatímco standardní knihovna nabízí mnoho univerzálních balíčků, Go podporuje také balíčky třetích stran. Tento návod ukazuje importování vestavěných balíčků i balíčků třetích stran v Go.
V tomto návodu jsme spouštěli naše programy v Go pomocí interpretu. Pro lepší výkon však můžete kódy zkompilovat do samostatných binárních souborů. Více informací o kompilaci programů v Go najdete zde. Pokud se chcete dozvědět, jak nasadit webovou aplikaci v Go pomocí Nginx, podívejte se na tento návod. Kromě toho se můžete podívat na náš návod, který ukazuje, jak psát vlastní balíčky v Go.
Jste vývojář v Go? CloudSigma nabízí podporu pro Go API pro bezproblémovou integraci s vašimi projekty.
Přejeme příjemnou práci!
Komentáře
Zatím žádné komentáře. Buďte první.