0Pricing
Go Academy · Lekcja

Dodawanie zewnętrznych zależności

go get, wersjonowanie i pamięć podręczna modułów

Dodawanie zewnętrznych zależności to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.

Znajdowanie pakietów

Podstawowym źródłem informacji o pakietach Go jest pkg.go.dev. Wyszukuj pakiety, czytaj dokumentację i przeglądaj przykłady użycia:

# 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: dodawanie zależności

Użyj go get, aby dodać zależność. Polecenie pobiera moduł i aktualizuje pliki go.mod oraz 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

Korzystanie z zależności

Po wykonaniu go get zaimportuj pakiet i używaj go jak zwykle:

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

Pobierz wstępnie wszystkie zależności wymienione w go.mod do pamięci podręcznej modułów:

# 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

Wybór wersji semantycznej: MVS

Go używa mechanizmu Minimum Version Selection (MVS): zawsze wybiera najniższą wymaganą wersję spełniającą wymagania wszystkich zależności. Nie wykonuje automatycznych aktualizacji do kolejnych wersji głównych:

# 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 — wyjaśnianie zależności

Sprawdź, dlaczego moduł jest wymagany podczas kompilowania:

# 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 dla powtarzalnych kompilacji

Tryb vendor zapisuje wszystkie zależności w repozytorium, zapewniając powtarzalność kompilacji:

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

Prywatne moduły z GONOSUMCHECK i GOPRIVATE

Skonfiguruj Go do pracy z prywatnymi modułami hostowanymi na serwerach wewnętrznych:

# 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

Wyczyść pamięć podręczną modułów, aby wymusić ponowne pobranie wszystkich zależności:

# 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

Sprawdzanie luk: govulncheck

Oficjalny skaner luk w zabezpieczeniach Go sprawdza zależności pod kątem znanych luk CVE:

# 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

Szybki test

Za pomocą którego polecenia można dodać do modułu konkretną wersję zależności?

Podsumowanie: zależności zewnętrzne

Podsumowanie:

  • go get pkg@version dodaje zależności
  • Go używa MVS — wybiera najniższą wersję spełniającą wszystkie wymagania
  • go mod tidy usuwa nieużywane zależności
  • go mod vendor służy do w pełni powtarzalnych kompilacji bez dostępu do sieci
  • Użyj GOPRIVATE dla prywatnych modułów
  • Uruchom govulncheck, aby znaleźć luki w zabezpieczeniach

Często zadawane pytania

Czy lekcja „Dodawanie zewnętrznych zależności” jest bezpłatna?

Tak — pełny tekst „Dodawanie zewnętrznych zależności” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Dodawanie zewnętrznych zależności”?

go get, wersjonowanie i pamięć podręczna modułów Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Go Academy?

Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Dodawanie zewnętrznych zależności”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?

Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pakiety: organizowanie kodu Go
  2. Moduły Go za pomocą go mod
  3. Dodawanie zewnętrznych zależności
  4. Pakiety internal i obszary robocze
← Powrót do Go Academy