aaa bbb ccc ddd aaa bbb <table align="center" bgcolor="bisque" border="5px" bordercolor="black"> <tbody> <tr> <td>aaa</td> <td>bbb</td> </tr> <tr> <td>ccc</td> <td>ddd</td> </tr> <tr> <td>aaa</td> <td>bbb</td> </tr> </tbody></table>
Система пакетов Go была разработана в предположении, что вся экосистема разработки существует в виде единого файлового дерева, содержащего актуальные версии всех пакетов, а при появлении новых версий она целиком перекомпилируется. Для прикладного программирования с использованием сторонних библиотек это достаточно сильное ограничение. В реальности часто возникают ограничения по версиям пакетов, используемых тем или иным кодом, а также ситуации, когда разные версии (ветви) одного проекта используют разные версии библиотечных пакетов. Начиная с версии 1.11 в Go поддерживаются так называемые модули. Модуль — это специальным образом описанный пакет, содержащий информацию о своей версии. При импорте модуля фиксируется версия, которая была использована. Это позволяет системе сборки контролировать, удовлетворены ли все зависимости, автоматически обновлять импортированные модули, когда автор вносит в них совместимые изменения, и блокировать обновление до версий, не обеспечивающих обратной сов