Прокси модулей и кеш: GOPROXY, GOMODCACHE и сборка без сети
Зависимости Go скачиваются не из репозиториев напрямую, а через прокси модулей: по умолчанию GOPROXY=https://proxy.golang.org,direct, где запятая означает «не нашлось — иди дальше», а direct — обращение к исходному репозиторию. Прокси даёт три вещи: кеширование (исчезнувший репозиторий не ломает сборку), скорость и неизменность уже опубликованных версий. Скачанное складывается в кеш модулей GOMODCACHE (по умолчанию $GOPATH/pkg/mod) — это распакованные исходники, доступные только для чтения; чистится он командой go clean -modcache, а не удалением каталога. Отдельно существует кеш сборки GOCACHE с результатами компиляции — путать их не стоит. Для сборки без сети есть два подхода: GOFLAGS=-mod=mod GOPROXY=off использует только кеш, а go mod download заранее наполняет его — именно это делают в Docker отдельным слоем, чтобы правка кода не приводила к перекачиванию зависимостей.