gpt4 book ai didi

go - 如何构建 Go 应用程序以生成多个二进制文件?

转载 作者:IT王子 更新时间:2023-10-29 01:17:04 24 4
gpt4 key购买 nike

我正在创建三个彼此非常相似的应用程序,但每个应用程序都将应用不同的逻辑。我不确定如何最好地构造它以避免重复代码。

所有应用程序都有以下共同点:- 读取和解析配置- 设置 SQL 数据库连接- 收集统计数据- 从标准输入读取

每个应用程序会对从 STDIN 读取的数据应用不同的逻辑。

这会被认为是可以接受的吗?将所有通用代码放在 main.go 中,然后构建为“go build -o bin/app1 main.go app1.go”等等 - 只为每个要构建的二进制文件引入特定于应用程序的逻辑?

main.go:

func main() {
// db connection
// stats worker
// read from stdin

proccessLine(line)
}

app1.go:

func processLine(line string) {
// logic for app 1
}

app2.go:

func processLine(line string) {
// logic for app 2
}

等等

最佳答案

以下文件夹结构用于许多流行的 go 项目,例如 helm , kubicorn

goproject/
├── bin
├── cmd
├── pkg
└── Makefile

cmd 目录将包含不同的二进制文件,在目录中分开。

cmd/
├── bin1
│   └── main.go
├── bin2
│   └── main.go
└── bin3
└── main.go

pkg 目录将包含所有可重用包。在您的情况下,不同二进制文件使用的通用代码。这个目录也可以命名为 internal ,了解更多 here .

pkg
├── reusablepackage1
└── reusablepackage2

bin 目录是可选的,它可以用来存放生成的二进制文件。如果您正在为 $GOBIN 生成二进制文件,则可以省略。

bin/
├── bin1
├── bin2
└── bin3

Makefile 可用于编写有用的脚本,例如生成运行测试套件的二进制文件等。您可以使用如下命令make bin1,make bin2 等。这是可选的,但我强烈推荐这样做。因为它使我免于一遍又一遍地编写冗长的构建命令。

关于go - 如何构建 Go 应用程序以生成多个二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50904560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com