Ce face go mod init
go mod init este primul pas pentru un proiect nou: creează go.mod cu numele modulului și versiunea de Go folosită. Numele modulului devine prefixul tuturor importurilor din proiect: pachetul din subdirectorul preturi se importă ca nume/modul/preturi.
Dacă proiectul va fi public, folosește adresa depozitului (github.com/ana/magazin), ca go get și go install să-l poată găsi. Pentru proiecte private sau de învățare, orice nume cu un punct în prima parte (exemplu.ro/magazin) este o alegere sigură.
Parametri
| Parametru | Descriere |
|---|---|
nume/modul |
Calea modulului. Fără ea, Go încearcă să o ghicească (de exemplu dintr-un depozit git) și cere să o dai explicit dacă nu poate. |
Exemple
Exemplul 1: Un proiect nou
mkdir magazin
cd magazin
go mod init exemplu.ro/magazin
cat go.mod
Rezultat în terminal
go: creating new go.mod: module exemplu.ro/magazin
module exemplu.ro/magazin
go 1.27.2
Exemplul 2: Comanda dată de două ori sau fără nume
go mod init exemplu.ro/magazin
cd /tmp/proiect-nou
go mod init
Rezultat în terminal
go: /home/ana/magazin/go.mod already exists
go: cannot determine module path for source directory /tmp/proiect-nou (outside GOPATH, module path must be specified)
Example usage:
'go mod init example.com/m' to initialize a v0 or v1 module
'go mod init example.com/m/v2' to initialize a v2 module
Run 'go help mod init' for more information.
Greșeli frecvente
- Nume de modul fără domeniu, de exemplu
magazin: funcționează local, dar poate intra în conflict cu pachete standard și nu poate fi descărcat de alții. go mod initîntr-un subdirector al unui modul existent: creezi un modul separat, iar importurile dintre ele nu mai funcționează cum te aștepți.- Schimbarea numelui modulului doar în
go.mod: trebuie actualizate și toate importurile din cod.
Comenzi înrudite
go mod tidy: Aduce go.mod și go.sum în acord cu importurile din cod: adaugă dependențele lipsă și le șterge pe cele nefolosite.go get: Adaugă, actualizează sau elimină dependențe în go.mod; descarcă modulele necesare.module și pachete: Un pachet este un director cu fișiere .go; un modul (go.mod) este un proiect cu mai multe pachete și dependențele lor.go work: Creează un workspace (go.work) ca să lucrezi deodată pe mai multe module locale, fără directive replace.