2 回答
TA贡献1906条经验 获得超3个赞
5/6 年后,使用 Go 1.16(2021 年第一季度)应该会更容易,它增加了对嵌入文件的支持(问题/提案 41191)
允许使用//go:embed命名单个文件来初始化普通string或[]byte变量:
//go:embed gopher.png
var gopherPNG []byte
导入需要将文件标记为包含//go:embed行并需要处理。
Goimports(gopls等)可以教授此规则,并//go:embed根据需要自动在任何文件中添加导入。
这引发了关于issue 42328关于如何避免在使用时意外包含“隐藏”文件的辩论//go:embed
这已在CL 275092 中解决并提交 37588ff
决定排除文件匹配.*和_*嵌入整个目录树时从嵌入目录的结果。
看 src/embed/internal/embedtest/embed_test.go
//go:embed testdata/k*.txt
var local embed.FS
testFiles(t, local, "testdata/ken.txt", "If a program is too slow, it must have a loop.\n")
//go:embed testdata/k*.txt
var s string
testString(t, s, "local variable s", "If a program is too slow, it must have a loop.\n")
//go:embed testdata/h*.txt
var b []byte
testString(t, string(b), "local variable b", "hello, world\n")
注意:对于CL 281492,如果支持,则cmd/go传递embedcfg到gccgo。
参见(2021年1月)发行43854 “选择将其//go:embed以不忽略文件和空迪尔斯”。
- 2 回答
- 0 关注
- 183 浏览
添加回答
举报