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