Что такое модуль Go: go.mod, go.sum и директива go
Модуль — единица версионирования и распространения кода: каталог с файлом go.mod в корне и всеми пакетами внутри. go.mod содержит путь модуля (он же префикс путей импорта), директиву go с версией языка и список зависимостей — прямых в первом блоке require и косвенных с пометкой // indirect. Рядом лежит go.sum с криптографическими контрольными суммами всех использованных версий; он не список зависимостей, а средство проверки целостности, и коммитить его обязательно. Директиву go часто понимают неверно: это не «версия компилятора», а версия языка — она задаёт, какие возможности синтаксиса доступны, и включает изменения поведения вроде посвязочной переменной цикла в 1.22. Отдельно от неё живёт строка toolchain, указывающая минимальную версию инструментов; при значении GOTOOLCHAIN=auto (умолчание обычной установки) go сам скачает нужную версию, если локальная старее.