目的
Golang编译程序默认是静态编译,会把相关的库都打包到一起,这在分发部署使用时非常方便。不过如果项目中用到的外部的静态资源文件,通常就需要将这些资源和程序一起拷贝分发了。现在可以使用标准库中 embed 包 https://pkg.go.dev/embed 将静态资源文件打包到一起
演示
将文件变成 string,  []byte
package main
import (
    _ "embed"
    "fmt"
)
// 下面一行像是注释的的内容是一条指令
// 它会将后面指定的文件的内容赋值给下面紧挨着声明的变量
//go:embed file1.txt
var s string
//go:embed subdir/file2.txt
var b []byte
func main() {
    fmt.Println(s)
    fmt.Println(string(b))
}
将文件变成 FS
package main
import (
    "embed"
    "fmt"
)
// 下面是embed最好用的功能,把文件放到FS中
//go:embed file1.txt
//go:embed subdir/file2.txt
var f embed.FS
func main() {
    data, _ := f.ReadFile("file1.txt")
    fmt.Println(string(data))
    data, _ = f.ReadFile("subdir/file2.txt")
    fmt.Println(string(data))
}
// 嵌入整个目录
//go:embed static/*
var staticFS embed.FS
Golang笔记:使用embed包将静态资源嵌入到程序中 https://blog.csdn.net/Naisu_kun/article/details/130722873
 沙滩星空的博客
沙滩星空的博客