Go embed 将资源文件打包到二进制文件中
Go About 1,328 wordsembed
Go 1.16
中引入了//go:embed
指令,将资源文件打包到二进制文件中,并提供访问能力。
可以方便地将配置文件、静态模板等打包到二进制文件夹中,发布时只需要一个二进制文件即可。
接收类型
string
、[]byte
、FS
。
匹配规则
底层使用path.Match
进行匹配。
导入 embed
import (
"embed"
)
string
//go:embed version.txt
var version string
func main() {
println(version)
}
[]byte
//go:embed version.txt
var version2 []byte
func main() {
println(string(version2))
}
*
main.go
所在目录下所有文件。
//go:embed *
var templateFs embed.FS
dir
template
目录下所有文件,但不包含.
、_
开头的文件。
//go:embed template
var templateFs embed.FS
dir/*
template
目录下所有文件,同样包含.
、_
开头的文件,但不包含子文件夹下的.
、_
开头的文件。
//go:embed template/*
var templateFs embed.FS
多个 embed
分别定义
//go:embed resource/*
//go:embed template/*
var templateFs embed.FS
合并定义
//go:embed resource/* template/*
var templateFs embed.FS
使用 embed.FS
func main() {
println(version)
println(string(version2))
println(config)
dir, _ := templateFs.ReadDir("template")
for i, v := range dir {
println(i, v.Name(), v.IsDir())
}
readDir, _ := templateFs.ReadDir("template/sub1")
for i, v := range readDir {
println(i, v.Name(), v.IsDir())
}
file, _ := templateFs.ReadFile("template/sub2/d.tmpl")
println(string(file))
fs, _ := template.ParseFS(templateFs, "template/sub2/d.tmpl")
fs.ExecuteTemplate(os.Stdout, "d", nil)
}
文档
Views: 936 · Posted: 2023-10-11
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...