Zrozumienie GOPATH

Wprowadzenie

Ten artykuł przeprowadzi Cię przez zrozumienie, czym jest GOPATH, jak działa i jak go skonfigurować. Jest to kluczowy krok do skonfigurowania środowiska programistycznego Go, jak również do zrozumienia, jak Go znajduje, instaluje i buduje pliki źródłowe. W tym artykule będziemy używać GOPATH w odniesieniu do koncepcji struktury folderów, którą będziemy omawiać. Będziemy używać $GOPATH, aby odnieść się do zmiennej środowiskowej, której Go używa do znalezienia struktury folderów.

Przestrzeń robocza Go to sposób, w jaki Go zarządza naszymi plikami źródłowymi, skompilowanymi binariami i obiektami w pamięci podręcznej, używanymi do szybszej kompilacji później. Typowe, a także zalecane jest posiadanie tylko jednej przestrzeni roboczej Go, choć możliwe jest posiadanie wielu przestrzeni. GOPATH działa jako folder główny przestrzeni roboczej.

Ustawianie zmiennej środowiskowej $GOPATH

Zmienna środowiskowa $GOPATH wymienia miejsca, w których Go ma szukać przestrzeni roboczych Go.

Domyślnie Go zakłada, że nasza GOPATH lokalizacja jest w $HOME/go, gdzie $HOME jest katalogiem głównym naszego konta użytkownika na naszym komputerze. Możemy to zmienić ustawiając zmienną środowiskową $GOPATH. Więcej informacji na temat ustawiania zmiennej $GOPATH można znaleźć w dokumentacji Go.

Ponadto, ta seria prowadzi przez instalację Go i konfigurację środowiska programistycznego Go.

$GOPATH Is Not $GOROOT

The $GOROOT is where Go’s code, compiler, and tooling lives – this is not our source code. $GOROOT jest zwykle czymś w rodzaju /usr/local/go. Nasz $GOPATH to zwykle coś w rodzaju $HOME/go.

Pomimo że nie musimy już specjalnie ustawiać zmiennej $GOROOT, wciąż jest ona przywoływana w starszych materiałach.

Teraz omówmy strukturę przestrzeni roboczej Go.

Anatomia przestrzeni roboczej Go

Wewnątrz przestrzeni roboczej Go, czyli GOPATH, znajdują się trzy katalogi: bin, pkg i src. Każdy z tych katalogów ma specjalne znaczenie dla łańcucha narzędzi Go.

.├── bin├── pkg└── src └── github.com/foo/bar └── bar.go

Przyjrzyjrzyjmy się każdemu z tych katalogów.

Katalog $GOPATH/bin jest miejscem, w którym Go umieszcza binarki, które go install kompiluje. Nasz system operacyjny używa zmiennej środowiskowej $PATH do znajdowania aplikacji binarnych, które mogą być uruchamiane bez pełnej ścieżki. Zaleca się dodanie tego katalogu do naszej globalnej zmiennej $PATH.

Na przykład, jeśli nie dodamy $GOPATH/bin do $PATH, aby wykonać program stamtąd, musielibyśmy uruchomić:

  • $GOPATH/bin/myapp

Gdy $GOPATH/bin zostanie dodany do $PATH, możemy wykonać to samo wywołanie w taki sposób:

  • myapp

Katalog $GOPATH/pkg jest miejscem, w którym Go przechowuje wstępnie skompilowane pliki obiektów, aby przyspieszyć późniejszą kompilację programów. Zazwyczaj większość programistów nie będzie potrzebowała dostępu do tego katalogu. Jeśli wystąpią problemy z kompilacją, można bezpiecznie usunąć ten katalog, a Go go odbuduje.

Katalog src jest miejscem, gdzie muszą znajdować się wszystkie nasze pliki .go, czyli kod źródłowy. Nie należy tego mylić z kodem źródłowym używanym przez narzędzia Go, który znajduje się w $GOROOT. W miarę pisania aplikacji Go, pakietów i bibliotek, będziemy umieszczać te pliki w $GOPATH/src/path/to/code.

Czym są pakiety?

Kod Go jest zorganizowany w pakiety. Pakiet reprezentuje wszystkie pliki znajdujące się w jednym katalogu na dysku. Jeden katalog może zawierać tylko niektóre pliki z tego samego pakietu. Pakiety są przechowywane, wraz z wszystkimi plikami źródłowymi Go napisanymi przez użytkownika, w katalogu $GOPATH/src. Możemy zrozumieć rozdzielczość pakietów poprzez importowanie różnych pakietów.

Jeśli nasz kod znajduje się w katalogu $GOPATH/src/blue/red, to nazwa pakietu powinna być red.

Deklaracja importu dla pakietu red byłaby następująca:

import "blue/red"

Pakiety, które znajdują się w repozytoriach kodu źródłowego, takich jak GitHub i BitBucket, mają pełną lokalizację repozytorium jako część ich ścieżki importu.

Na przykład, zaimportowalibyśmy kod źródłowy w https://github.com/gobuffalo/buffalo używając następującej ścieżki importu:

import "github.com/gobuffalo/buffalo"

Więc, ten kod źródłowy byłby w następującej lokalizacji na dysku:

$GOPATH/src/github.com/gobuffalo/buffalo

Zakończenie

W tym artykule omówiliśmy GOPATH jako zestaw folderów, w których Go oczekuje naszego kodu źródłowego, jak również czym są te foldery i co zawierają. Omówiliśmy jak zmienić tę lokalizację z domyślnej $HOME/go na wybraną przez użytkownika poprzez ustawienie zmiennej środowiskowej $GOPATH. Na koniec omówiliśmy, jak Go szuka pakietów w tej strukturze folderów.

Wprowadzone w Go 1.11, moduły Go mają zastąpić Go Workspaces i GOPATH. Chociaż zalecane jest rozpoczęcie korzystania z modułów, niektóre środowiska, takie jak środowiska korporacyjne, mogą nie być gotowe do korzystania z modułów.

Moduł GOPATH jest jednym z trudniejszych aspektów konfigurowania Go, ale po jego skonfigurowaniu zwykle możemy o nim zapomnieć.

.

Leave a Reply