代码之家  ›  专栏  ›  技术社区  ›  Blankman

混淆了歌朗项目布局报告在实践中的工作原理

go
  •  -1
  • Blankman  · 技术社区  · 6 年前

    这个问题是关于大众 project-layout . 这仅仅是一种布局代码的方法,但是实际编译的二进制文件将在

    /cmd/app1/
    /cmd/app2/
    

    因此,如果我有一个网站,它仍然被认为是一个命令应用程序,只需启动HTTP侦听器等。

    或者整个布局中有几个“入口”点,而不仅仅是在cmd文件夹中?

    您将如何使用此布局实际生成和运行应用程序?(或者其中一个,因为据我所知,它支持多个)

    是这样的:

    go build cmd/app1/*.go ?

    2 回复  |  直到 6 年前
        1
  •  1
  •   oren    6 年前

    你可以

    go build ./cmd/app/
    

    例如,我有这个模块

    ├── cmd
    │   ├── cli
    │   │   └── main.go
    │   └── web
    │       └── main.go
    ├── go.mod
    └── service
        └── service.go
    

    Go.Mod就是

    module example
    

    服务.go:

    package service
    
    import "fmt"
    
    func DoSomething() {
        fmt.Println("service processing")
    }
    

    命令/web/main.go:

    package main
    
    import (
        "example/service"
        "fmt"
    )
    
    func main() {
        fmt.Println("starting web program")
        service.DoSomething()
    }
    

    命令/cli/main.go:

    package main
    
    import (
        "example/service"
        "fmt"
    )
    
    func main() {
        fmt.Println("starting cli program")
        service.DoSomething()
    }
    

    生成(从根目录)

    构建Web:

    go build ./cmd/web/
    

    这将创建二进制文件 web

    运行网络

    ./web
    // output:
    // starting web program
    // service processing
    

    建立CLI:

    go build ./cmd/cli/
    

    运行网络

    ./web
    // output:
    // starting cli program
    // service processing
    
        2
  •  0
  •   Mostafa Solati    6 年前

    如果要在文件夹中构建所有应用程序,可以这样做:

    go install ./...
    

    这将在gopath内部的bin文件夹中构建所有应用程序,然后您可以运行任何您喜欢的应用程序。
    但如果你想建立和运行一个特定的应用程序,你可以去那个文件夹,然后简单地运行。

    go build 
    

    只要该文件夹中有一个主包,就可以构建程序。