go get în Go

Comanda go, module și teste Go 1.11 (doar pentru dependențe din Go 1.18)

Adaugă, actualizează sau elimină dependențe în go.mod; descarcă modulele necesare.

Sintaxă
go get modul                 # ultima versiune
go get modul@v1.5.0          # o versiune anume
go get modul@latest
go get -u ./...              # actualizează dependențele
go get modul@none            # elimină
go get go@1.27.0             # versiunea minimă de Go

Ce face go get

go get modifică dependențele modulului curent: adaugă un modul nou în go.mod (descărcându-l în cache), schimbă versiunea unui modul existent sau îl elimină (@none). Versiunea se scrie după @: un tag (@v1.5.0), @latest, o ramură sau un commit.

Din Go 1.18, go get nu mai instalează programe; pentru asta există go install. go get -u ./... actualizează toate dependențele la ultimele versiuni minore și de corecție (dar nu sare la o versiune majoră nouă, care are altă cale, ca /v2).

Parametri

Parametru Descriere
modul@versiune Calea modulului (sau a unui pachet din el) și, opțional, versiunea.
-u Actualizează și dependențele modulului cerut.
-t Ia în calcul și dependențele testelor.

Exemple

Exemplul 1: Adăugare, schimbare de versiune și eliminare

go get github.com/google/uuid
go get github.com/google/uuid@v1.5.0
go get github.com/google/uuid@latest
go get github.com/google/uuid@none

Rezultat în terminal

go: downloading github.com/google/uuid v1.6.0
go: added github.com/google/uuid v1.6.0
go: downloading github.com/google/uuid v1.5.0
go: downgraded github.com/google/uuid v1.6.0 => v1.5.0
go: upgraded github.com/google/uuid v1.5.0 => v1.6.0
go: removed github.com/google/uuid v1.6.0

Exemplul 2: Folosirea dependenței în cod

Identificatorul generat este aleatoriu, deci diferă la fiecare rulare.

package main

import (
    "fmt"

    "github.com/google/uuid"
)

func main() {
    id := uuid.NewString()
    fmt.Println("comanda nouă:", id)
}

Rezultat posibil (diferă la fiecare rulare)

comanda nouă: 3f6c2b9e-8d41-4c1a-9a7e-52b0e4d1f8a3

Greșeli frecvente

  • go get pentru a instala un program: 'go get' is no longer supported outside a module sau adaugă doar o dependență. Folosește go install modul@latest.
  • go get -u fără teste după: actualizările pot schimba comportamentul. Rulează go test ./....
  • Căutarea versiunii majore noi cu @latest: v2+ are altă cale (github.com/autor/proiect/v2).

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 install: Compilează un program și pune executabilul în directorul bin (GOBIN sau GOPATH/bin), ca să-l poți rula de oriunde.
  • 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 list: Listează pachete sau module și informații despre ele (fișiere, importuri, versiuni), în text sau JSON.