作用
go:embed可以把文件打包到二进制文件中,通过读取内存的方式获取内容
嵌入单文件
上面是目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import ( _ "embed" "fmt" )
var s string
func main() { fmt.Println(s) }
|
这里的注释标记把hello.txt的内容存到s中,所以注释不能删
也可以把数据解析成字节切片[]byte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import ( _ "embed" "fmt" )
var s []byte
func main() { fmt.Println(s) }
|
嵌入文件夹
目录结构
1 2 3 4
| │ main.go │ └─test hello.txt
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package main
import ( "embed" "fmt" "io" )
var f embed.FS
func main() { open, err := f.Open("test/hello.txt") if err != nil { panic(err) } defer open.Close() all, err := io.ReadAll(open) if err != nil { panic(err) } fmt.Println(string(all)) }
|