require фиксирует модуль и его версию. Без этой записи Go не знает, что подключать. При запуске go mod tidy строки require обновляются автоматически.require github.com/some/pkg v1.2.3
replace подменяет источник модуля. Можно указать форк, другую версию или локальный путь. Чаще всего используют при локальной разработке — когда нужно протестировать изменения в зависимости, не публикуя их. replace github.com/some/pkg => ../local/pkg
exclude запрещает использовать конкретную версию при разрешении зависимостей. Модуль не удаляется, но если что-то в дереве зависимостей попытается подтянуть именно эту версию — Go её проигнорирует и выберет другую. Применяют, когда версия содержит баг или уязвимость.exclude github.com/some/pkg v1.2.3
🐸Библиотека Go для собеса