Moduły Go za pomocą go mod
Inicjowanie modułów, go.mod i go.sum
Moduły Go za pomocą go mod to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 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.
Czym jest moduł Go?
Moduł to zbiór pakietów Go zawierający w katalogu głównym plik go.mod. Moduły są w Go jednostką dystrybucji i wersjonowania kodu:
// go.mod — created with: go mod init github.com/myuser/myapp
module github.com/myuser/myapp
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
golang.org/x/sync v0.5.0
)go mod init
Zainicjalizuj nowy moduł za pomocą go mod init:
# In project directory:
go mod init github.com/myuser/myapp
# This creates go.mod:
# module github.com/myuser/myapp
# go 1.21
# The module path is the canonical import path prefix
# for all packages in this modulego.sum — weryfikacja integralności
go.sum rejestruje kryptograficzne sumy kontrolne wszystkich zależności. Nigdy nie edytuj go ręcznie — zarządzają nim polecenia go:
# go.sum example entries:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
# Commit go.sum to version control — it ensures reproducible buildsgo get — dodawanie zależności
Użyj go get, aby dodać lub zaktualizować zależności. Polecenie aktualizuje zarówno go.mod, jak i go.sum:
# Add latest version
go get github.com/pkg/errors
# Add specific version
go get github.com/pkg/errors@v0.9.1
# Upgrade to latest patch release
go get -u=patch github.com/pkg/errors
# Remove unused dependency from go.mod
go mod tidygo mod tidy
go mod tidy dodaje brakujące i usuwa nieużywane wymagania z plików go.mod i go.sum. Uruchom je po edycji importów:
# After adding/removing imports:
go mod tidy
# What it does:
# 1. Adds any missing module requirements
# 2. Removes requirements for packages no longer imported
# 3. Updates go.sum with needed checksums
# 4. Best practice: run before committingWersjonowanie modułów za pomocą Semver
Moduły Go używają wersjonowania semantycznego. Wersje główne >= 2 wymagają sufiksu w ścieżce:
// v1: github.com/pkg/errors
import "github.com/pkg/errors"
// v2+: module path includes major version
import "github.com/foo/bar/v2"
import "github.com/foo/bar/v3"
// go.mod:
// require github.com/foo/bar/v2 v2.3.1go mod vendor
Tryb vendor kopiuje wszystkie zależności do lokalnego katalogu vendor/, umożliwiając kompilowanie bez dostępu do sieci:
# Copy deps to vendor/
go mod vendor
# Build using vendor/
go build -mod=vendor ./...
# Useful for:
# - Air-gapped environments
# - Reproducible CI builds without network
# - Code review of dependenciesDyrektywa replace
Dyrektywa replace w pliku go.mod zastępuje moduł lokalną ścieżką lub inną wersją — jest przydatna podczas lokalnego programowania:
module github.com/myapp
go 1.21
require github.com/mylib v1.0.0
// Use local fork during development:
replace github.com/mylib => ../mylib
// Replace with a specific version:
// replace github.com/mylib v1.0.0 => github.com/myfork v1.0.0go env GOPATH i GOMODCACHE
Najważniejsze zmienne środowiskowe dotyczące modułów Go:
# Module cache location (default: ~/go/pkg/mod)
go env GOMODCACHE
# Proxy for downloading modules (default: proxy.golang.org)
go env GOPROXY
# Sum database for checksum verification
go env GONOSUMCHECK
# Disable module proxy (use direct)
export GOPROXY=directgo list i go mod graph
Przeanalizuj zależności modułu za pomocą tych poleceń:
# List all modules in the build
go list -m all
# Show module dependency graph
go mod graph
# Find which module provides a package
go list -m -json all | grep -A5 gin
# Check for available updates
go list -m -u allSzybki test
Co robi polecenie go mod tidy?
Podsumowanie: moduły Go
Najważniejsze informacje o modułach:
go mod inittworzy moduł wraz z plikiemgo.modgo.modzawiera nazwę modułu, wersję Go i zależnościgo.sumprzechowuje sumy kontrolne — należy go zatwierdzić w repozytoriumgo getdodaje lub aktualizuje zależności, ago mod tidyporządkuje plikireplacesłuży do pracy z lokalnymi forkami- Wersje główne v2+ wymagają sufiksu w ścieżce
Często zadawane pytania
Czy lekcja „Moduły Go za pomocą go mod” jest bezpłatna?
Tak — pełny tekst „Moduły Go za pomocą go mod” 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 „Moduły Go za pomocą go mod”?
Inicjowanie modułów, go.mod i go.sum Ć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 2 z 4.
Ile czasu zajmuje lekcja „Moduły Go za pomocą go mod”?
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