Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与golang一起分配资源_Go_Resources_Relative Path - Fatal编程技术网

与golang一起分配资源

与golang一起分配资源,go,resources,relative-path,Go,Resources,Relative Path,我正在开发一个库,其中包含一个资源文件,特别是一个电子邮件模板。该文件位于/templates/email.html上 我很难从.go源代码中引用此文件,因为很难解析相对路径。到目前为止,我找到的选择是: 使用$GOPATH:一些依赖关系管理工具可能会重新定义$GOPATH并中断 使用自定义环境变量:可以工作,但它会强制库的用户添加变量 将模板内联到字符串上:它很难看 有人有更好的选择吗?我不想仅仅为了这个而使用第三方LIB,但如果你知道的话,请随意指出,这样我就可以阅读源代码,看看他们是如

我正在开发一个库,其中包含一个资源文件,特别是一个电子邮件模板。该文件位于
/templates/email.html

我很难从
.go
源代码中引用此文件,因为很难解析相对路径。到目前为止,我找到的选择是:

  • 使用
    $GOPATH
    :一些依赖关系管理工具可能会重新定义
    $GOPATH
    并中断

  • 使用自定义环境变量:可以工作,但它会强制库的用户添加变量

  • 将模板内联到字符串上:它很难看

有人有更好的选择吗?我不想仅仅为了这个而使用第三方LIB,但如果你知道的话,请随意指出,这样我就可以阅读源代码,看看他们是如何做到的


谢谢

最常用的技术是嵌入资源,因此您所要做的就是分发二进制文件

Go库的列表中列出了进行资源嵌入的库:

  • -将文件嵌入Go程序,并为其提供http.FileSystem接口
  • -在go中嵌入文件的简单工具,重点在于“定制”和易用性
  • -将任何文件转换为可管理的Go源代码的包
  • -生成go代码以将资源文件嵌入到库或可执行文件中
  • -使用Go嵌入新资源
  • -go.rice是一个go包,它可以使用html、js、css和图像等资源 模板非常简单
  • -将静态资源嵌入go文件中,以进行单二进制编译+使用 http.FileSystem+symlinks
  • -生成一个vfsdata.go文件,该文件静态地实现给定的虚拟 文件系统

考虑将电子邮件模板文件直接嵌入到二进制文件中:查看内联资源是开发GO库时最好的方法。这样,资源是完全透明的。将模板嵌入二进制文件将直接影响那些使用您的库并需要编译它的人。