Tilføjelse af eksterne afhængigheder
go get, versionering og modulcachen
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 drivergo 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.4Brug 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 setupSemantisk 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/gingo 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/netgo 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,directgo 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 cleanupKontrol 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.4Hurtigt tjek
Hvilken kommando føjer en bestemt version af en afhængighed til dit modul?
Opsummering: Eksterne afhængigheder
Opsummering:
go get pkg@versiontilføjer afhængigheder- Go bruger MVS — den laveste version, der opfylder alle krav
go mod tidyrydder ubrugte afhængigheder vækgo mod vendorbruges til fuldt reproducerbare byggeprocesser uden netværksforbindelse- Brug
GOPRIVATEtil private moduler - Kør
govulncheckfor at finde sårbarheder
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
- Packages: Organisering af Go-kode
- Go-moduler med go mod
- Tilføjelse af eksterne afhængigheder
- Interne packages og workspaces