介绍
一般使用 go 打包时,如果是固定的文件,那么放在一起是很方便的
使用 go:embed 将会简化代码,使得静态文件一起打包
仅限 go 版本 >= 1.16
目录
代码
一共分为三种方式
- 读取文件结果到:string
- 读取文件结果到:[]byte
- 读取文件夹
package main
import (
"embed"
"log"
// _ "embed" // 注意:如果是没有使用到,必须这样导入,否则无法正常使用
"fmt"
"time"
)
//go:embed static/demo.js
var jsContent string
//go:embed static/demo.js
var jsContent2 []byte
//go:embed static
var jsDir embed.FS
func main() {
fmt.Println(jsContent)
fmt.Println(jsContent2)
jsContent3, err := jsDir.ReadFile("static/demo.js")
if err != nil {
log.Fatalln(err)
}
fmt.Println(jsContent3)
time.Sleep(5 * time.Second)
}
注意
- 必须是 //go:embed,中间没有空格,否则为注释了
- //go:embed 不能在函数中使用
- 不需要再写读取方法,直接获取值即可
- 如果不涉及 embed 模块的使用,也要记得导入,前面标个 _ 即可
- 如果是文件夹,采用路径方式 ReadFile 即可读取出 []byte 结果
- 只能获取当前 .go 文件的同级目录下的文件,不能通过 ../ 返回上级目录