go:embed
嵌入 go:embed
以下是几个使用 go:embed 指令的例子:
- 嵌入一个文本文件:
package main
import _ "embed"
//go:embed hello.txt
var hello string
func main() {
fmt.Println(hello)
}
这个程序会将 hello.txt 文件的内容嵌入到程序中。在运行时,可以直接通过变量 hello 访问文件内容,无需从磁盘中读取。
- 嵌入一个目录中的所有文件:
package main
import _ "embed"
//go:embed static/*
var staticFS embed.FS
func main() {
files, err := staticFS.ReadDir("static")
if err != nil {
log.Fatal(err)
}
for _, file := range files {
fmt.Println(file.Name())
}
}
这个程序会将 static 目录中的所有文件嵌入到程序中,并将它们作为一个文件系统(embed.FS)使用。在运行时,可以通过 embed.FS 的方法访问目录中的所有文件。
- 嵌入多个文件:
package main
import _ "embed"
//go:embed foo.txt bar.txt
var files embed.FS
func main() {
foo, err := files.ReadFile("foo.txt")
if err != nil {
log.Fatal(err)
}
bar, err := files.ReadFile("bar.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(foo))
fmt.Println(string(bar))
}
这个程序会将 foo.txt 和 bar.txt 两个文件嵌入到程序中,并将它们作为一个文件系统(embed.FS)使用。在运行时,可以通过 embed.FS 的方法访问这两个文件的内容。
