为了账号安全,请及时绑定邮箱和手机立即绑定

对 golang 项目布局回购在实践中的工作方式感到困惑

对 golang 项目布局回购在实践中的工作方式感到困惑

Go
素胚勾勒不出你 2023-05-15 15:39:53
这个问题参考了流行的project-layout。这只是一种布局代码的方法吗,但二进制文件的实际编译将在/cmd/app1/ /cmd/app2/所以如果我有一个网站,它仍然会被认为是一个 cmd 应用程序,它只会启动 http 侦听器等。或者整个布局中是否有多个“入口”点,而不仅仅是在 cmd 文件夹中?您将如何使用此布局实际构建和运行您的应用程序?(或者其中之一,因为据我所知它支持多个)是不是像:go build cmd/app1/*.go ?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

你可以


go build ./cmd/app/

例如我有这个模块


├── cmd

│   ├── cli

│   │   └── main.go

│   └── web

│       └── main.go

├── go.mod

└── service

    └── service.go

go.mod 只是


module example

服务.去:


package service


import "fmt"


func DoSomething() {

    fmt.Println("service processing")

}

命令/网络/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()

}

构建(从根目录)

建立网络:


go build ./cmd/web/

这将创建二进制文件web


运行网络


./web

// output:

// starting web program

// service processing

构建客户端:


go build ./cmd/cli/

运行网络


./web

// output:

// starting cli program

// service processing


查看完整回答
反对 回复 2023-05-15
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

如果你想在一个文件夹中构建你所有的应用程序,你可以这样做:

go install ./...

这将在 GOPATH 中的 bin 文件夹中构建你所有的应用程序,然后你可以运行你喜欢的任何应用程序。
但是如果你想构建和运行一个特定的应用程序,你可以转到该文件夹并运行。

go build

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


查看完整回答
反对 回复 2023-05-15
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信