Golang嵌入静态资源文件

作者:matrix 被围观: 8 次 发布时间:2026-02-28 分类:Golang | 无评论 »

go:embed

推荐使用官方embed特性解决,要求GO1.16+

//go:embed static/*
var staticFiles embed.FS

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

go:embed注释必须声明,编译时Golang会自动打包对应路径static/*的文件
最终使用声明的staticFiles拿到即可

statik

对比官方embed,statik会更麻烦一些。好处是会把静态资源打包为go文件,最后编译时嵌入到二进制中

手动打包

# 本地安装statik
$ go install github.com/rakyll/statik@latest

# 执行打包 -src参数指定目录   输出到项目本地fego目录
$ statik -src="~/Downloads/dist" -dest=./fego -f

指定读取

statikFs "github.com/rakyll/statik/fs"
_ "PROJECT/fego/statik" // 注册statik文件: 项目本地fego目录


// 配置 statik 文件系统
var statikFS http.FileSystem
statikFS, err := statikFs.New()
if err != nil {
    log.Fatal(err)
}

// 打开文件
file, err := statikFS.Open(filePath)
if err != nil {
    // 如果文件不存在,返回 404
    c.String(http.StatusNotFound, "File not found")
    return
}
defer file.Close()
其他文章:
本文固定链接:https://www.hhtjim.com/golang-embed-statik.html
matrix
本文章由 matrix 于2026年02月28日发布在Golang分类下,目前没有通告,你可以至底部留下评论。
转载请注明:Golang嵌入静态资源文件-HHTjim'S 部落格
关键字:, ,

添加新评论 »

 🙈 😱 😂 😛 😭 😳 😀 😆 👿 😉 😯 😮 😕 😎 😐 😥 😡 😈 💡

插入图片