go mod init în Go

Creează fișierul go.mod în directorul curent și transformă directorul într-un modul Go.

Sintaxă
go mod init nume/modul

go mod init github.com/ana/magazin
go mod init exemplu.ro/magazin

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.