Î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

$GOROOTEste 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