Go Многомодульное управление зависимостями

Я новичок в goLang. Я пытаюсь разработать многомодульный проект. моя рабочая папка нравится

root
   1-Authz
   1.1-Main.go
   1.2-go.mod (contains:module com.mbt.authz)
   1.3-go.sum
   2-Product
   2.1-Main.go
   2.2-go.mod  (contains:module com.mbt.product)
   2.3-go.sum
   3-go.work
   4-GoMultiModule.code-workspace

   go.work folder is like 
   go 1.18

   use(
    ./Authz
    ./Product
   )

Оба модуля могут работать сами по себе. Но я хочу определить метод в Authz и вызвать его функция из Продукта. Что мне делать, как я могу добавить зависимость к модулю продукта из моей локальной рабочей области?

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
42
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Для тестирования просто добавьте в Product/main.go импорт со ссылкой на Authz:

import com/mbt/authz/aPackage

Это предполагает, что вы определяете метод в пакете, отличном от main, в Authz проекте.

Ответ принят как подходящий

Это часто задаваемые вопросы для многих новых разработчиков golang.

В golang модуль и пакет — это не одно и то же. Модуль может содержать один или несколько пакетов. Модуль инициализируется командой go mod init [modulename]. Эта команда создаст файл go.mod. Пакет можно просто определить в коде с помощью package [packagename]. Пакет в том же модуле (назовем его локальным пакетом) можно импортировать с помощью import "[packagename] [modulename]/[pathofpackage]"

В вашем случае, если вы не хотите создавать другой модуль, вы можете удалить файлы go.mod и go.sum в папках Authz и Products. Затем в корневой папке запустите go mod init root. Затем импортируйте пакет аутентификации в код продукта с чем-то вроде import (authz "root/authz") (authz — это имя пакета, указанное в коде Authz)

Если authz должен быть другим модулем, он будет рассматриваться как другой модуль, который нельзя импортировать напрямую, как локальный пакет.

Чтобы импортировать локальный модуль в папку Authz, вам нужно отредактировать файл go.mod в папке продуктов следующим образом:

module somemodulename

go 1.16

require (
    authzmodulename v0.0.0
)

replace authzmodulename v0.0.0 => ../Authz/

Другие вопросы по теме