Ответ
Файл go.sum
— это автоматически генерируемый файл, который обеспечивает целостность и воспроизводимость зависимостей в Go-проекте. Он содержит криптографические хеш-суммы для каждой версии каждого модуля, от которого зависит проект.
Ключевые назначения go.sum
:
Верификация целостности (Integrity Verification): При сборке проекта Go использует хеши из
go.sum
для проверки того, что загруженные из интернета модули не были изменены или подменены. Это защищает от атак на цепочку поставок (supply-chain attacks).Воспроизводимость сборок (Build Reproducibility):
go.sum
гарантирует, что все разработчики в команде, а также CI/CD-системы, используют абсолютно идентичный код зависимостей. Это предотвращает ошибки вида «у меня работает, а у тебя нет».
Отличие от go.mod
:
go.mod
определяет требования к версиям зависимостей (например,github.com/gin-gonic/gin v1.7.0
или новее).go.sum
фиксирует факт использования конкретной версии, записывая её точную хеш-сумму.
Пример строки в go.sum
:
github.com/example/module v1.2.3 h1:abCdEfGh...
github.com/example/module v1.2.3/go.mod h1:ijKlMnOp...
Здесь h1:
означает, что используется хеш-алгоритм SHA-256.
Важно: Файл go.sum
необходимо коммитить в систему контроля версий (Git) вместе с go.mod
, чтобы обеспечить консистентность для всей команды и сборочных процессов.