Делаем три разных файла 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