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 drivergo 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.4Korzystanie 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 setupWybó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/gingo 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/netgo 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,directgo 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 cleanupSprawdzanie 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.4Szybki 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@versiondodaje zależności- Go używa MVS — wybiera najniższą wersję spełniającą wszystkie wymagania
go mod tidyusuwa nieużywane zależnościgo mod vendorsłuży do w pełni powtarzalnych kompilacji bez dostępu do sieci- Użyj
GOPRIVATEdla 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
- Pakiety: organizowanie kodu Go
- Moduły Go za pomocą go mod
- Dodawanie zewnętrznych zależności
- Pakiety internal i obszary robocze