在go中通过相对路径嵌入文件

And*_*rey 11 go

我有这个文件结构:

lib/ 
  util.go
CHANGELOG.md
Run Code Online (Sandbox Code Playgroud)

util.go需要嵌入CHANGELOG.md. 我尝试:

//go:embed ../CHANGELOG.md
var changelog string
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:pattern ../CHANGELOG.md: invalid pattern syntax

如果我无法通过相对路径嵌入资源,那么在子模块中嵌入资源的最佳实践是什么?

Mac*_*ndo 18

根据嵌入文档

\n
\n

这些模式是相对于包含源文件的包目录进行解释的进行解释的。即使在 Windows 系统上,路径分隔符也是正斜杠。模式不能包含 \xe2\x80\x98.\xe2\x80\x99 或 \xe2\x80\x98..\xe2\x80\x99 或空路径元素,也不能以斜杠开头或结尾。

\n
\n

这意味着相对路径的根目录是go源文件所在的文件夹。所以我认为我们无法嵌入其他本地文件夹中的资源。

\n

也许这个评论可以解释为什么它是这样设计的,这个答案提供了一个解决方案。

\n

如有错误,请指教。

\n