gpt4 book ai didi

go - golang中资源应该放在哪里

转载 作者:IT老高 更新时间:2023-10-28 13:01:55 26 4
gpt4 key购买 nike

我的应用程序使用 json 配置文件和其他资源。我应该将它们放在我的项目层次结构中的什么位置?我在 http://golang.org/doc/code.html 中找不到答案(如何编写 Go 代码)

更新:问题不在于应用程序自动分配资源,而更简单:我应该将资源保存在项目层次结构中的什么位置?是否有任何人期望它们成为标准的地方?

最佳答案

目前没有唯一的正确答案,也没有任何 Go 工具假定或强制执行的任何强约定。

通常,我首先假设我需要的文件位于运行程序的同一目录中。例如,假设我需要 conf.json for myprog.go;然后这两个文件一起存在于同一个目录中,它可以运行类似的东西

go build -o myprog && ./myprog

当我部署代码时,myprog 二进制文件和 conf.json 一起存在于服务器上。 run/supervisor 脚本需要 cd 到那个目录然后运行程序。

这也适用于您拥有大量资源的情况;例如,如果您有一个包含 JS、CSS 和图像的网络服务器,您只需假设它们与代码中的 cwd 相关,然后将资源目录与服务器二进制文件一起部署。

假设 cwd 的另一种替代方法是使用 -conf 标志,用户可以使用它来指定配置文件。我通常使用它来分发需要单个配置文件的命令行工具和开源服务器应用程序。如果需要,您甚至可以使用 -assets 标志或其他东西来指向整个资源文件树。

最后,另一种方法是没有任何资源文件。 go-bindata是我为此目的使用的一个有用的工具——它只是将一些数据作为字节编码到 Go 源文件中。这样,它就全部融入了您的二进制文件中。我认为当资源数据很少或永远不会改变并且非常小时,这种方法最有用。 (否则你将运送巨大的二进制文件。)我过去使用 go-bindata 的一个(有点愚蠢的)例子是将一个 favicon 烘焙到一个非常简单的服务器中,否则它不需要任何除了服务器二进制文件之外的额外文件。

关于go - golang中资源应该放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19586827/

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