Go использует кэш, если в нём есть результат для тех же входных данных сборки: исходников, зависимостей, компилятора и значимых параметров.
При каком условии go build не будет пересобирать пакет, а будет использовать кэш?
Go использует кэш, если в нём есть результат для тех же входных данных сборки: исходников, зависимостей, компилятора и значимых параметров.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Go использует кэш, если в нём есть результат для тех же входных данных сборки: исходников, зависимостей, компилятора и значимых параметров.
Кэширование определяется не только временем изменения файла. Смена исходников, версии toolchain или флагов может потребовать новую сборку соответствующих пакетов. Посмотреть каталог можно через go env GOCACHE, а флаг -a принудительно пересобирает пакеты. Отдельная оговорка касается cgo: изменения внешних C-библиотек автоматически обнаруживаются не всегда, поэтому после них может потребоваться очистка кэша или принудительная сборка.
Источник: pkg.go.dev.