Чистый способ добиться этого - использовать автономный модуль вне всех проектов, а затем импортировать его в любое место. Поскольку это очевидно, вы хотите, чтобы это был сам модуль.
Как
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- go.mod
+--- go.sum
+--- my-utils
+--- go.mod
+--- go.sum
+--- uuid
+--- uuid.go
Но если вам все еще нужно, чтобы утилиты также поддерживались как часть вашего API-сервера, тогда ваш API-сервер должен бытьмодуль и импортируйте его туда, куда вам нужен пакет утилит. Это не рекомендуется, но не принесет никакого вреда, так как GO оптимизирует как часть контекста, необходимого для компиляции.
Вот так
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- go.mod
+--- go.sum
+--- my-utils
+--- uuid
+--- uuid.go
Я понимаю, что вам нужно поддерживать несколько модулей в одном репо иПерекрестная ссылка. Насколько я понимаю, это не то, как он должен работать, поскольку вы всегда можете перекрестно ссылаться на вложенный пакет по относительному пути модуля.
Также, возможно, вы знаете это, но так как вы используете модули, вам нужно сидеть вGOPATH / GOROOT для разрешения.