Go Academy · Les

Externe afhankelijkheden toevoegen

go get, versiebeheer en de modulecache

Les 3 van 412 stappen

Externe afhankelijkheden toevoegen is een gratis Go Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Go Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Go Academy bevat in totaal 4 lessen.

Pakketten vinden

De belangrijkste bron voor het vinden van Go-pakketten is pkg.go.dev. Zoek naar pakketten, lees documentatie en bekijk gebruiksvoorbeelden:

# 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: een afhankelijkheid toevoegen

Gebruik go get om een afhankelijkheid toe te voegen. De opdracht downloadt de module en werkt go.mod en go.sum bij:

# 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

De afhankelijkheid gebruiken

Importeer en gebruik het pakket na go get op de gebruikelijke manier:

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

Download vooraf alle afhankelijkheden in go.mod naar de modulecache:

# 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

Semantische versieselectie: MVS

Go gebruikt Minimum Version Selection (MVS): het kiest altijd de minimaal vereiste versie die aan alle afhankelijkheden voldoet. Er worden geen automatische upgrades naar een nieuwe hoofdversie uitgevoerd:

# 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 — Afhankelijkheden verklaren

Zoek uit waarom een module in je compilatie vereist is:

# 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 voor reproduceerbare compilaties

Met vendoring leg je alle afhankelijkheden vast in je repository voor reproduceerbare compilaties:

# 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 ...

Privémodules met GONOSUMCHECK en GOPRIVATE

Configureer Go voor privémodules die op interne servers worden gehost:

# 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

Wis de modulecache om het opnieuw downloaden van alle afhankelijkheden af te dwingen:

# 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

Kwetsbaarheden controleren: govulncheck

De officiële scanner voor kwetsbaarheden in Go controleert je afhankelijkheden op bekende CVE's:

# 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

Korte controle

Welke opdracht voegt een specifieke versie van een afhankelijkheid aan je module toe?

Samenvatting: externe afhankelijkheden

Samenvatting:

  • go get pkg@version voegt afhankelijkheden toe
  • Go gebruikt MVS: de minimale versie die aan alle vereisten voldoet
  • go mod tidy verwijdert ongebruikte afhankelijkheden
  • go mod vendor is bedoeld voor volledig reproduceerbare offline-compilaties
  • Gebruik GOPRIVATE voor privémodules
  • Voer govulncheck uit om kwetsbaarheden te vinden
Gratis beginnen

Leer Go met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “Externe afhankelijkheden toevoegen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Go Academy, waaronder “Externe afhankelijkheden toevoegen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Go Academy bevat in totaal 4 lessen.

Wat leer ik in “Externe afhankelijkheden toevoegen”?

go get, versiebeheer en de modulecache Je oefent met Go Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Go Academy te beginnen?

Ervaring vooraf is niet nodig. Go Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Externe afhankelijkheden toevoegen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Go Academy?

Ja. Elke les over Go Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Packages: Go-code organiseren
  2. Go-modules met go mod
  3. Externe afhankelijkheden toevoegen
  4. Interne packages en workspaces
← Terug naar Go Academy