golang应该把资源保存在哪里

Ale*_*rev 26 go

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

更新:问题不在于使用应用程序自动分配资源,而是更简单:我应该将资源保留在项目层次结构中的哪个位置?是否有人希望他们有一些标准的地方?

Cal*_*are 10

没有单一的正确答案,目前任何Go工具都没有任何强有力的约定.

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

go build -o myprog && ./myprog
Run Code Online (Sandbox Code Playgroud)

当我部署代码时,myprog二进制文件conf.json一起存在于服务器上.运行/超级用户脚本需要到cd该目录,然后运行该程序.

当你拥有大量资源时,这也有效; 例如,如果您有一个包含JS,CSS和图像的Web服务器,您只需假设它们与代码中的cwd相关,并将资源目录与服务器二进制文件一起部署.

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

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

  • 在我看来,将源和资源放在一起是一个坏主意。二进制资源似乎也有很多缺点。 (2认同)