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