Go embed简介

go与其他语言区别的一大特点就是,可以很轻松的编译成一个带有所有依赖库的可执行文件。

但是如果想让web网站的静态文件,也一同被打包进可执行文件,之前是要借助一些github上的第三方包。

随着go1.16的释出,一个叫做embed的新特性解决了这个需求。

embed是什么

embed是在Go 1.16中新添加的特性。它通过//go:embed指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力。

embed的基本使用

编译文件

package main

import (
    _ "embed"
    "fmt"
)

//go:embed str.txt
var str string

func main() {
    fmt.Printf("%s", str)
}

编译文件夹

package main

import (
	"embed"
	"fmt"
)

//go:embed static
var f embed.FS

func main() {
	data, _ := f.ReadFile("p/index.html")
	fmt.Println(string(data))
}

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注