Go (znany również jako Golang) to otwartoźródłowy, statycznie typowany język programowania. Został pierwotnie opracowany przez Google. Niektóre z istotnych cech Go to prostota, wysoka wydajność, czytelność i efektywność.
Podobnie jak w przypadku każdego innego popularnego języka programowania, biblioteka standardowa Go oferuje bogaty zestaw pakietów. Możemy jednak również rozszerzyć jego funkcjonalność, włączając pakiety firm trzecich. Ten przewodnik zademonstruje importowanie pakietów i włączanie ich do projektów w Go.
Wymagania wstępne
Aby postępować zgodnie z tym przewodnikiem, będziesz potrzebować następujących komponentów do swojej dyspozycji:
- Odpowiednio skonfigurowany serwer Ubuntu. Dowiedz się więcej o konfigurowaniu własnego serwera Ubuntu na CloudSigma.
- Środowisko programistyczne Go. Możesz skorzystać z tego przewodnika dotyczącego instalacji Go na Ubuntu.
- Nowoczesny edytor tekstu, na przykład Vim, Sublime Text, Atom, Visual Studio Code, Brackets, itp. W tym przewodniku zostanie użyty Visual Studio Code .
Krok 1 – Instalacja Go
Omówiliśmy już instalację podstawowego języka programowania Go na Ubuntu 20.04. Istnieje jednak łatwiejsza metoda alternatywna: g (lekki menedżer wersji Go).
Powodem, dla którego zamierzamy użyć g jest to, że żadna z wersji Go dostępnych w repozytoriach pakietów Ubuntu ani snap nie oferuje najnowszej dostępnej wersji Go (v1.18 w momencie pisania tego przewodnika). Zawsze zaleca się korzystanie z najnowszej dostępnej wersji każdego pakietu języka programowania.
Następujące polecenie uruchomi skrypt instalacyjny g :
|
1 |
wget -qO- https://git.io/g-install | sh -s |


Aby zmiany weszły w życie, musisz zrestartować sesję powłoki. Po restarcie zweryfikuj instalację:
|
1 |
go version |
|
1 |
which go |

Po zainstalowaniu Go zaleca się również zainstalowanie gopls . Jest to oficjalny serwer języka Go. Jest kompatybilny z wieloma edytorami tekstu, takimi jak VS Code, Vim, Emacs, Sublime Text, Atom i wieloma innymi. Uruchom następujące polecenie:
|
1 |
go install golang.org/x/tools/gopls@latest |
Nasze środowisko programistyczne Go jest teraz gotowe.
Krok 2 – Tworzenie przykładowego skryptu Go
Cały kod zademonstrowany w tym przewodniku zmieści się w pojedynczym skrypcie Go. Utwórz przykładowy skrypt Go:
|
1 |
touch practice.go |
Po wprowadzeniu zmian w skrypcie możemy go uruchomić za pomocą następującego polecenia Go:
|
1 |
go run practice.go |
W tym przypadku kompilator Go uruchomi kod w trybie interpretera.
Krok 3 – Korzystanie z pakietów biblioteki standardowej
Go zawiera ogromną kolekcję w swojej bibliotece standardowej. Składa się ona z licznych pakietów, na przykład:
- fmt: Implementuje sformatowane wejście/wyjście z funkcjami analogicznymi do C ( printf i scanf ).
- http: Ten pakiet dostarcza funkcje do tworzenia usług sieciowych, wysyłania i pobierania danych przez protokół http itp.
Aby włączyć dowolny pakiet do projektu Go, musi on zostać zaimplementowany za pomocą instrukcji import . Instrukcja ta jest deklarowana za pomocą słowa kluczowego import wraz z nazwami pakietów. Na przykład, aby zaimportować math/rand , instrukcja importu wyglądałaby tak:
|
1 |
import "math/rand" |
Poniższy kod implementuje różne funkcje z pakietu 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)) } } |
Ten kod demonstruje prostą pętlę for, która wyświetla na ekranie 10 losowych liczb całkowitych (od 0 do 24). Tutaj:
- rand.Int() : To wywołanie funkcji zwraca losową liczbę całkowitą.
- rand.Intn() : Działa podobnie do rand.Int() , ale przyjmuje parametr, który definiuje zakres dla losowych liczb całkowitych (od 0 do określonej liczby).
Następnie uruchom kod:
|
1 |
go run practice.go |
Wynik będzie wyglądał następująco:

Zauważ, że wynik będzie dokładnie taki sam, ponieważ ziarno generatora liczb losowych jest domyślnie stałą wartością. Taka jest natura generatora liczb pseudolosowych. Możesz dowiedzieć się więcej o losowym ziarnie tutaj.
Krok 4 – Importowanie wielu pakietów
Większe i bardziej złożone projekty wymagają włączenia wielu pakietów. Jak zaimportować je do kodu Go? Jedną z poprawnych opcji jest użycie pojedynczych instrukcji importu dla każdego importowanego pakietu. Jednak to podejście jest nieefektywne w porównaniu z następującą strukturą importu:
|
1 2 3 4 5 6 7 8 9 |
import ( "<package_1>" "<package_2>" "<package_3>" ) |
W tym przypadku pojedyncza instrukcja importu dołącza wiele pakietów jednocześnie. Zmniejsza to ilość kodu, którą trzeba napisać, poprawiając jednocześnie czytelność.
Poniższy kod pokazuje tę funkcję w działaniu:
|
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)) } } |
Uruchom kod:
|
1 |
go run practice.go |
Wynik będzie wyglądał mniej więcej tak:

Krok 5 – Instalowanie dodatkowych bibliotek Go
Biblioteka standardowa Go zawiera liczne przydatne pakiety. Z założenia są one ogólnego przeznaczenia. Umożliwia to programistom tworzenie własnych pakietów na bazie biblioteki standardowej w celu zaspokojenia ich specyficznych potrzeb. Sprawdź oficjalną bazę pakietów Go.
Co jeśli musisz zaimplementować pakiet Go zewnętrznej firmy? Go jest dostarczany z go install poleceniem ( go get jest przestarzałe). Może ono pobrać dowolny zewnętrzny pakiet Go z internetu.
W celach demonstracyjnych zainstalujemy cobra-cli . Następujące polecenie Go pobierze i zainstaluje niezbędne pliki oraz zintegruje pakiet z systemem bibliotek Go:
|
1 |
go install github.com/spf13/cobra-cli@latest |

Plik binarny cobra-cli powinien znajdować się w następującej lokalizacji:
|
1 |
ls -l $GOPATH/bin |

Pozostałe pliki pakietu powinny znajdować się w następującej lokalizacji:
|
1 |
ls -l $GOPATH/pkg/mod/github.com/spf13 |

Począwszy od wersji Go v1.11, moduły Go definiują wersję pakietu, który chcesz zaimportować. Jest to szczegółowo wyjaśnione tutaj: GitHub modułów Go.
Krok 6 – Aliasy pakietów
W różnych sytuacjach możesz napotkać konflikt nazw pakietów między pakietami lokalnymi a importowanymi. W takich przypadkach kolizję może rozwiązać aliasowanie. Struktura aliasowania wygląda mniej więcej tak:
|
1 |
import <alias> "import_package_name" |
Zmodyfikujmy nasz prosty program w Go, aby włączyć fmt_alias jako alias dla pakietu 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)) } } |
Zauważ, że zamiast używać fmt.Printf() , używamy aliasu pakietu fmt_alias.Printf() .
Jednak Go nie jest zbyt przychylny aliasom. Kiedy używasz aliasów, aby uniknąć kolizji nazw importu, zaleca się aliasowanie najbardziej lokalnego lub specyficznego dla projektu importu. Na przykład, jeśli chcesz mieć zarówno lokalny pakiet strings , jak i pakiet systemowy strings , powinieneś utworzyć alias dla pakietu lokalnego, a nie systemowego.
Najlepszą praktyką jest unikanie kolizji nazw w pierwszej kolejności.
Krok 7 – Formatowanie importów
Nauczyliśmy się deklarować wszystkie importy za pomocą pojedynczej instrukcji import . Co jeśli masz kilka importów? Na przykład:
|
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" ) |
Formatowanie importów sortuje pakiety w określonej kolejności, poprawiając spójność kodu. Ponieważ sortuje ono tylko kolejność importów, zapobiega również przypadkowym commitom. Zapobiega to także niepotrzebnemu mieszaniu w kodzie i dezorientującym przeglądom kodu.
Większość nowoczesnych edytorów automatycznie sformatuje importy za Ciebie. Alternatywnie będą one obsługiwać goimports. Powszechną praktyką w branży jest używanie goimports zamiast ręcznego sortowania importów. Ponadto goimports odzwierciedla również zmiany stylu w kodzie.
Oto jak import blok może wyglądać po zastosowaniu 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" ) |
Zauważasz jakiś schemat?
- Wszystkie biblioteki standardowe są grupowane jako pierwsze.
- Grupy są rozdzielone pustymi liniami, co poprawia czytelność kodu.
Podsumowanie
Importy w Go to potężna funkcja, która pozwala na wywoływanie funkcji niewbudowanych w Go. Podczas gdy biblioteka standardowa oferuje wiele pakietów ogólnego przeznaczenia, Go obsługuje również pakiety firm trzecich. Ten przewodnik pokazuje, jak importować wbudowane i zewnętrzne pakiety Go.
W tym poradniku uruchamialiśmy nasze programy w Go za pomocą interpretera. Możesz jednak skompilować kod do samodzielnych plików binarnych, aby uzyskać lepszą wydajność. Więcej informacji o kompilowaniu programów w Go znajdziesz tutaj. Jeśli chcesz dowiedzieć się, jak wdrożyć aplikację internetową Go za pomocą Nginx, zapoznaj się z tym samouczkiem. Dodatkowo możesz zapoznać się z naszym przewodnikiem, który pokazuje jak pisać własne pakiety Go.
Jesteś programistą Go? CloudSigma oferuje obsługę Go API w celu bezproblemowej integracji z Twoimi projektami.
Miłego kodowania!
Komentarze
Brak komentarzy. Bądź pierwszy.