go embed
go embed
go语言有文件嵌套的强大功能,方便了项目部署,不需要每次都带上不常变化的文件移植,直接将文件以二进制形式嵌入到程序中,但是容易变化的配置文件不建议嵌入到程序中
1、嵌入文件的字节数据
package main
import (
_ "embed"
"fmt"
)
//go:embed hello.txt
var data []byte
func main() {
fmt.Println(string(data))
}
2、嵌入一个文件系统,里面放入文件或者目录
文件:
package main
import (
"embed"
"fmt"
)
//go:embed hello.txt
var data embed.FS
func main() {
// 直接读取文件
byteData, err := data.ReadFile("hello.txt") // 注意是data.ReadFile()
fmt.Println(string(byteData), err)
}
目录:
package main
import (
"embed"
"fmt"
"path"
)
//go:embed txt
var data embed.FS
func main() {
dir, err := data.ReadDir("txt")
if err != nil {
fmt.Println(err)
return
}
// 遍历目录
for _, entry := range dir {
info, _ := entry.Info() // entry.Info() 获取文件信息
// 读取文件
byteData, err := data.ReadFile(path.Join("txt", info.Name())) // 注意要加上目录名
fmt.Println(string(byteData), err)
}
}

浙公网安备 33010602011771号