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