Go Academy · leksjon

Legge til eksterne avhengigheter

go get, versjonering og modulbufferen

Leksjon 3 av 412 trinn

Legge til eksterne avhengigheter er en gratis leksjon i Go Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Go Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Go Academy inneholder totalt 4 leksjoner.

Finne pakker

Den viktigste ressursen for å finne Go-pakker er pkg.go.dev. Søk etter pakker, les dokumentasjonen og se brukseksempler:

# Search and explore at https://pkg.go.dev

# Popular packages:
# github.com/gin-gonic/gin        — HTTP framework
# github.com/stretchr/testify     — test assertions
# golang.org/x/sync               — extended sync primitives
# github.com/spf13/cobra          — CLI framework
# github.com/jackc/pgx/v5         — PostgreSQL driver

go get: legge til en avhengighet

Bruk go get for å legge til en avhengighet. Kommandoen laster ned modulen og oppdaterer go.mod og go.sum:

# Add latest version
go get github.com/stretchr/testify

# Add specific version
go get github.com/stretchr/testify@v1.8.4

# Add a pre-release version
go get github.com/foo/bar@main

# go get updates go.mod:
# require github.com/stretchr/testify v1.8.4

Bruke avhengigheten

Etter go get importerer og bruker du pakken på vanlig måte:

package main

import (
    "fmt"
    "github.com/stretchr/testify/assert"
    "testing"
)

func TestAdd(t *testing.T) {
    assert.Equal(t, 4, 2+2, "math should work")
    fmt.Println("assertion done")
    _ = assert.New // suppress unused import
}

go mod download

Last ned alle avhengigheter i go.mod på forhånd til modulbufferet:

# Download all deps from go.mod
go mod download

# Download specific module
go mod download github.com/gin-gonic/gin@v1.9.1

# Useful for:
# - Docker layer caching (copy go.mod/go.sum first, then download)
# - Pre-warming CI cache
# - Offline development setup

Semantisk versjonsvalg: MVS

Go bruker Minimum Version Selection (MVS): den velger alltid den laveste nødvendige versjonen som oppfyller alle avhengighetene. Ingen automatiske hovedversjonsoppgraderinger:

# If A requires gin v1.9.0
# and B requires gin v1.9.1
# MVS selects v1.9.1 (minimum that satisfies both)

# To upgrade ALL dependencies to latest minor/patch:
go get -u ./...

# To upgrade specific package:
go get -u github.com/gin-gonic/gin

go mod why – forklare avhengigheter

Finn ut hvorfor en modul kreves i byggingen din:

# Why is encoding/json needed?
go mod why encoding/json

# Why is golang.org/x/net needed?
go mod why golang.org/x/net

# Output shows the import chain:
# github.com/myapp
# github.com/gin-gonic/gin
# golang.org/x/net

go mod vendor for reproduserbare bygg

Vendoring låser alle avhengigheter i repositoriet ditt for reproduserbare bygg:

# Vendor all deps
go mod vendor

# Build only from vendor (no network)
go build -mod=vendor ./...

# Dockerfile pattern:
# COPY go.mod go.sum ./
# RUN go mod download
# COPY . .
# RUN go build ...

Private moduler med GONOSUMCHECK og GOPRIVATE

Konfigurer Go for private moduler som ligger på interne servere:

# Tell Go not to use proxy/sumdb for private modules
export GOPRIVATE=github.com/mycompany/*
export GONOSUMCHECK=github.com/mycompany/*

# Or in go env:
go env -w GOPRIVATE=github.com/mycompany/*

# For enterprise Go proxy:
export GOPROXY=https://proxy.mycompany.com,direct

go clean -modcache

Tøm modulbufferet for å tvinge frem ny nedlasting av alle avhengigheter:

# Clear entire module cache
go clean -modcache

# Clear cache for specific version
go clean -modcache github.com/gin-gonic/gin@v1.9.1

# Useful when:
# - Cache is corrupted
# - Testing with a fresh environment
# - Disk space cleanup

Kontrollere sårbarheter: govulncheck

Go sin offisielle sårbarhetsskanner kontrollerer avhengighetene dine for kjente CVE-er:

# Install govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest

# Scan your module
govulncheck ./...

# Output example:
# Vulnerability #1: GO-2023-1234
# github.com/foo/bar v1.2.3
# Fixed in: v1.2.4
# Suggestion: go get github.com/foo/bar@v1.2.4

Kort kontroll

Hvilken kommando legger til en bestemt versjon av en avhengighet i modulen din?

Oppsummering: Eksterne avhengigheter

Sammendrag:

  • go get pkg@version legger til avhengigheter
  • Go bruker MVS – den laveste versjonen som oppfyller alle krav
  • go mod tidy rydder bort ubrukte avhengigheter
  • go mod vendor brukes for fullstendig reproduserbare bygg uten nett
  • Bruk GOPRIVATE for private moduler
  • Kjør govulncheck for å finne sårbarheter
Gratis å komme i gang

Lær deg Go med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «Legge til eksterne avhengigheter» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Go Academy, inkludert «Legge til eksterne avhengigheter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Go Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Legge til eksterne avhengigheter»?

go get, versjonering og modulbufferen Du øver på Go Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Go Academy?

Ingen tidligere erfaring er nødvendig. Go Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Legge til eksterne avhengigheter»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Go Academy-leksjonen?

Ja. Alle Go Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Pakker: organisering av Go-kode
  2. Go-moduler med go mod
  3. Legge til eksterne avhengigheter
  4. Interne pakker og arbeidsområder
← Tilbake til Go Academy