Как правильно организовать структуру проекта на Golang с несколькими модулями?

Как создать один модуль с общими функциями для трех различных программ - Repeater, Controller и Executor - чтобы каждый из них мог импортировать это общий модуль?
  • 19 февраля 2024 г. 4:38
Ответы на вопрос 2
Для организации проекта на Golang с несколькими модулями, вы можете использовать систему модулей Go (Go Modules). 

Шаги по созданию и импортированию общего модуля для трех программ Repeater, Controller и Executor:

1. Создайте общий модуль с общими функциями. Создайте новую директорию внутри вашего проекта для этого модуля. Например, `common`.

2. В этой директории создайте файл `common.go`, в котором определите общие функции и структуры данных. Например:

```go
package common

import "fmt"

func SayHello() {
    fmt.Println("Hello from common module!")
}
```

3. В каждой из трех программ - Repeater, Controller и Executor - создайте файл `main.go` и импортируйте общий модуль. Например, в файле `main.go` программы Repeater определите:

```go
package main

import "your/project/path/common"

func main() {
    common.SayHello()
    // другие действия программы Repeater
}
```

4. В каждой из программ добавьте в файл `go.mod` зависимость от вашего общего модуля. Для этого выполните команду внутри директории каждой программы:

```bash
go mod edit -replace=your/project/path/common=../common
```

5. Теперь ваши программы Repeater, Controller и Executor будут иметь доступ к общему модулю и его функциям.

6. Чтобы запустить любую из программ, выполните `go run main.go` внутри соответствующей директории программы.

Таким образом, вы создали и импортировали общий модуль для трех различных программ на Golang, позволяя им использовать общие функции и структуры данных.
И я хочу сделать 1 модуль который они будут импортировать с некоторым набором общих для них функций.
Если хотите так сделать, то можно просто сделать интерфейс, у которого методы будут совпадать с общими функциями которые вы хотите вынести, можете его вынести в отдельный файл/модуль при необходимости.
Я часа 4 ковырялся в статьях и видео уроках но так и не смог из 1 несчастного модуля импортировать функции в другой неменее несчастный модуль
Можно упрощенную версию сюда выложить и конкретнее написать что не получается
Похожие вопросы