Вы можете просто
go build ./cmd/app/
Например, у меня есть этот модуль
├── cmd
│ ├── cli
│ │ └── main.go
│ └── web
│ └── main.go
├── go.mod
└── service
└── service.go
go.mod просто
module example
service.go:
package service
import "fmt"
func DoSomething() {
fmt.Println("service processing")
}
cmd / web / main.go:
package main
import (
"example/service"
"fmt"
)
func main() {
fmt.Println("starting web program")
service.DoSomething()
}
cmd / cli / main.go:
package main
import (
"example/service"
"fmt"
)
func main() {
fmt.Println("starting cli program")
service.DoSomething()
}
Сборка (из корня)
Build web:
go build ./cmd/web/
Это создаст двоичный файл web
run web
./web
// output:
// starting web program
// service processing
Build cli:
go build ./cmd/cli/
запустить веб
./web
// output:
// starting cli program
// service processing