Go Academy · Lektion

Tilføjelse af eksterne afhængigheder

go get, versionering og modulcachen

Lektion 3 af 412 trin

Tilføjelse af eksterne afhængigheder er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.

Sådan finder du pakker

Den vigtigste ressource til at finde Go-pakker er pkg.go.dev. Søg efter pakker, læs dokumentationen og se eksempler på brug:

# 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: Tilføjelse af en afhængighed

Brug go get til at tilføje en afhængighed. Kommandoen henter modulet og opdaterer 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

Brug af afhængigheden

Efter go get importerer og bruger du pakken på normal vis:

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

Hent alle afhængigheder, der står i go.mod, på forhånd til modulcachen:

# 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 versionsvalg: MVS

Go bruger valg af minimumsversion (MVS): Den vælger altid den laveste krævede version, som opfylder alle afhængigheder. Der sker ingen automatiske opgraderinger af hovedversioner:

# 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 — forklaring af afhængigheder

Find ud af, hvorfor et modul kræves i din byggeproces:

# 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 til reproducerbare byggeprocesser

Ved at bruge vendor låses alle afhængigheder fast i dit repository, så byggeprocessen kan genskabes:

# 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

Konfigurér Go til private moduler, der 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

Ryd modulcachen for at tvinge en ny hentning af alle afhængigheder:

# 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

Kontrol af sårbarheder: govulncheck

Den officielle Go-scanner til sårbarheder kontrollerer dine afhængigheder for kendte 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

Hurtigt tjek

Hvilken kommando føjer en bestemt version af en afhængighed til dit modul?

Opsummering: Eksterne afhængigheder

Opsummering:

  • go get pkg@version tilføjer afhængigheder
  • Go bruger MVS — den laveste version, der opfylder alle krav
  • go mod tidy rydder ubrugte afhængigheder væk
  • go mod vendor bruges til fuldt reproducerbare byggeprocesser uden netværksforbindelse
  • Brug GOPRIVATE til private moduler
  • Kør govulncheck for at finde sårbarheder
Gratis at komme i gang

Lær Go med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “Tilføjelse af eksterne afhængigheder” gratis?

Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “Tilføjelse af eksterne afhængigheder”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Tilføjelse af eksterne afhængigheder”?

go get, versionering og modulcachen Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Go Academy?

Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Tilføjelse af eksterne afhængigheder”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Go Academy-lektion?

Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Packages: Organisering af Go-kode
  2. Go-moduler med go mod
  3. Tilføjelse af eksterne afhængigheder
  4. Interne packages og workspaces
← Tilbage til Go Academy