0Pricing
Go Academy · Lekcja

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 module

go.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 builds

go 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 tidy

go 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 committing

Wersjonowanie 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.1

go 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 dependencies

Dyrektywa 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.0

go 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=direct

go 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 all

Szybki test

Co robi polecenie go mod tidy?

Podsumowanie: moduły Go

Najważniejsze informacje o modułach:

  • go mod init tworzy moduł wraz z plikiem go.mod
  • go.mod zawiera nazwę modułu, wersję Go i zależności
  • go.sum przechowuje sumy kontrolne — należy go zatwierdzić w repozytorium
  • go get dodaje lub aktualizuje zależności, a go mod tidy porządkuje pliki
  • replace sł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

  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