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



▶️Итак, в 1 проекте должны содержаться 3 различные программы: Repeater, Controller и Executor.

Также нужно сделать 1 модуль, который они будут импортировать с некоторым набором общих для них функций.

Как организовать структуру такого проекта?





▶️Всё просто, делаем 3 разных файла main.go под каждый сервис. Кладём их каждый в свою подпапку в директории, например cmd.

А для общих библиотек используем отдельную директорию, например pkg, и будем импортировать отсюда функционал во все 3 сервиса.



Т.е. у нас получается структура файлов:

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")

}




@golang_interview