@videxerion

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

В 1 проекте будут содержаться 3 различные программы: Repeater, Controller и Executor, полагаю что необходимо под каждый выделить свой модуль. И я хочу сделать 1 модуль который они будут импортировать с некоторым набором общих для них функций. Пока что максиум что вышло в каждый модуль добавить копии файла с этими общими функциями, что выглядит не очень. Я часа 4 ковырялся в статьях и видео уроках но так и не смог из 1 несчастного модуля импортировать функции в другой неменее несчастный модуль. Прошу помощи как можно подробнее обьясните как сделать то что я хочу если это вообще возможно.
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
Делаем три разных файла main.go под каждый сервис. Кладём их каждый в свою подпапку в директории, например "cmd".
А для общих библиотек используем отдельную директорию, например "pkg", и будем импортировать отсюда функционал во все три сервиса.

Т.е. у нас получается структура файлов:
cmd/
      repeater/
            main.go
      controller/
            main.go
      executor/
            main.go
pkg/
      c-library/
            clibrary.go
go.mod


И потом запускаем компиляцию:

go build ./cmd/repeater
go build ./cmd/controller
go build ./cmd/executor


Пример main.go
package main

import c_library "test/pkg/c-library"

func main() {
	c_library.HelloWorld()
}


И общая библиотека:
package c_library

import "fmt"

func HelloWorld() {
	fmt.Println("HELLO WORLD")
}


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

module test
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@calculator212
И я хочу сделать 1 модуль который они будут импортировать с некоторым набором общих для них функций.
Если хотите так сделать, то можно просто сделать интерфейс, у которого методы будут совпадать с общими функциями которые вы хотите вынести, можете его вынести в отдельный файл/модуль при необходимости.
Я часа 4 ковырялся в статьях и видео уроках но так и не смог из 1 несчастного модуля импортировать функции в другой неменее несчастный модуль
Можно упрощенную версию сюда выложить и конкретнее написать что не получается
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы