Возможно данный метод выглядит довольно необычным. Однако именно как предлагается делать в документации. Система модулей Golang'а умеет работать с такими тэгами. Это не единственный возможный способ экспортировать модули. Можно попробовать git submodule, как вы описали, можно использовать workspaces. Мне показалось, что описаный в статье способ наиболее удобный.
Если вы хотите поделиться библиотеками из приватного репозитория, то лучше рассмотрите другие варианты. Например можно вынести библиотеку в отдельный публичный репозиторий и использовать Go Workspaces при необходимости.
Возможно данный метод выглядит довольно необычным. Однако именно как предлагается делать в документации. Система модулей Golang'а умеет работать с такими тэгами. Это не единственный возможный способ экспортировать модули. Можно попробовать git submodule, как вы описали, можно использовать workspaces. Мне показалось, что описаный в статье способ наиболее удобный.
Если вы хотите поделиться библиотеками из приватного репозитория, то лучше рассмотрите другие варианты. Например можно вынести библиотеку в отдельный публичный репозиторий и использовать Go Workspaces при необходимости.
Все должно работать. Во всяком случае этот подход работает в gitlab для проектов, которые находятся в нескольких вложенных группах.
Вы можете расположить библиотеку в другом месте, все продолжит работать как раньше. Нужно только чтобы:
Библиотека была модулем
Был git tag, который содержит путь до библиотеки и ее версию
Было указано правило replace в go.mod для того, чтобы ваш сервис использовал локальную версию библиотеки
Добавил в своем репозитории пример с библиотекой, которая находится во вложенных директориях. Обратите внимание на тэг для этой библиотеки:
Теперь ее можно импортировать так:
Да, вы правы. Структура проекта, описанная в https://github.com/golang-standards/project-layout не является стандартом. Обновил на более корректную формулировку.