本文主要是介绍go:embed 打包静态文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
介绍
一般使用 go 打包时,如果是固定的文件,那么放在一起是很方便的
使用 go:embed 将会简化代码,使得静态文件一起打包
仅限 go 版本 >= 1.16
目录
代码
一共分为三种方式
- 读取文件结果到:string
- 读取文件结果到:[]byte
- 读取文件夹
package mainimport ("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.FSfunc 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 文件的同级目录下的文件,不能通过 ../ 返回上级目录
这篇关于go:embed 打包静态文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!