Înțelegerea GOPATH
Introducere
Acest articol vă va ajuta să înțelegeți ce este GOPATH
, cum funcționează și cum să îl configurați. Acesta este un pas crucial pentru configurarea unui mediu de dezvoltare Go, precum și pentru înțelegerea modului în care Go găsește, instalează și construiește fișierele sursă. În acest articol vom folosi GOPATH
atunci când ne vom referi la conceptul de structură de dosare pe care îl vom discuta. Vom folosi $GOPATH
pentru a ne referi la variabila de mediu pe care Go o folosește pentru a găsi structura de dosare.
Un spațiu de lucru Go este modul în care Go gestionează fișierele noastre sursă, fișierele binare compilate și obiectele din memoria cache folosite pentru o compilare mai rapidă ulterior. Este tipic și, de asemenea, recomandat, să aveți un singur Go Workspace, deși este posibil să aveți mai multe spații. GOPATH
acționează ca folderul rădăcină al unui spațiu de lucru.
Setarea variabilei de mediu $GOPATH
Variabila de mediu $GOPATH
enumeră locurile în care Go trebuie să caute spațiile de lucru Go.
În mod implicit, Go presupune că locația noastră GOPATH
este la $HOME/go
, unde $HOME
este directorul rădăcină al contului nostru de utilizator de pe calculator. Putem schimba acest lucru prin setarea variabilei de mediu $GOPATH
. Pentru un studiu mai aprofundat, urmați acest tutorial despre citirea și setarea variabilelor de mediu în Linux.
Pentru mai multe informații despre setarea variabilei $GOPATH
, consultați documentația Go.
În plus, această serie trece prin instalarea Go și configurarea unui mediu de dezvoltare Go.
$GOPATH nu este $GOROOT
$GOROOT
Este locul unde se află codul, compilatorul și instrumentele Go – acesta nu este codul nostru sursă. De obicei, $GOROOT
este ceva de genul /usr/local/go
. $GOPATH
al nostru este de obicei ceva de genul $HOME/go
.
Deși nu mai este nevoie să configurăm în mod specific variabila $GOROOT
, aceasta este încă menționată în materialele mai vechi.
Acum, să discutăm structura spațiului de lucru Go.
Anatomia spațiului de lucru Go
În interiorul unui spațiu de lucru Go, sau GOPATH
, există trei directoare: bin
, pkg
, și src
. Fiecare dintre aceste directoare are o semnificație specială pentru lanțul de instrumente Go.
.├── bin├── pkg└── src └── github.com/foo/bar └── bar.go
Să aruncăm o privire la fiecare dintre aceste directoare.
Directorul $GOPATH/bin
este directorul în care Go plasează binarele pe care go install
le compilează. Sistemul nostru de operare folosește variabila de mediu $PATH
pentru a găsi aplicații binare care se pot executa fără o cale completă. Este recomandat să adăugăm acest director la variabila noastră globală $PATH
.
De exemplu, dacă nu adăugăm $GOPATH/bin
la $PATH
pentru a executa un program de acolo, va trebui să rulăm:
- $GOPATH/bin/myapp
Când $GOPATH/bin
este adăugat la $PATH
putem face același apel astfel:
- myapp
Directorul $GOPATH/pkg
este locul unde Go stochează fișierele obiect precompilate pentru a accelera compilarea ulterioară a programelor. În mod obișnuit, majoritatea dezvoltatorilor nu vor avea nevoie să acceseze acest director. Dacă întâmpinați probleme cu compilarea, puteți șterge în siguranță acest director, iar Go îl va reconstrui apoi.
Directorul src
este locul unde trebuie să fie localizate toate fișierele noastre .go
, sau codul sursă. Acesta nu trebuie confundat cu codul sursă pe care îl utilizează uneltele Go, care se află în directorul $GOROOT
. Pe măsură ce scriem aplicații, pachete și biblioteci Go, vom plasa aceste fișiere în $GOPATH/src/path/to/code
.
Ce sunt pachetele?
Codul Go este organizat în pachete. Un pachet reprezintă toate fișierele dintr-un singur director de pe disc. Un director poate conține numai anumite fișiere din același pachet. Pachetele sunt stocate, împreună cu toate fișierele sursă Go scrise de utilizator, în directorul $GOPATH/src
. Putem înțelege rezoluția pachetelor prin importul diferitelor pachete.
Dacă codul nostru locuiește la $GOPATH/src/blue/red
, atunci numele pachetului său ar trebui să fie red
.
Declarația de import pentru pachetul red
ar fi:
import "blue/red"
Pachetele care locuiesc în depozite de cod sursă, cum ar fi GitHub și BitBucket, au locația completă a depozitului ca parte a căii de import.
De exemplu, am importa codul sursă de la https://github.com/gobuffalo/buffalo folosind următoarea cale de import:
import "github.com/gobuffalo/buffalo"
În consecință, acest cod sursă s-ar afla în următoarea locație de pe disc:
$GOPATH/src/github.com/gobuffalo/buffalo
Concluzie
În acest articol am discutat despre GOPATH
ca fiind un set de dosare în care Go se așteaptă ca codul nostru sursă să trăiască, precum și despre ce sunt aceste dosare și ce conțin ele. Am discutat despre cum să schimbăm această locație din locația implicită de $HOME/go
la alegerea utilizatorului prin setarea variabilei de mediu $GOPATH
. În cele din urmă, am discutat despre modul în care Go caută pachete în cadrul acelei structuri de dosare.
Introduse în Go 1.11, modulele Go au ca scop înlocuirea spațiilor de lucru Go și a GOPATH
. Deși este recomandat să începem să folosim modulele, este posibil ca unele medii, cum ar fi mediile corporative, să nu fie pregătite să folosească modulele.
Programul GOPATH
este unul dintre cele mai complicate aspecte ale configurării Go, dar odată ce este configurat, de obicei putem uita de el.
.
Leave a Reply