1 回答
TA贡献1828条经验 获得超6个赞
使用Go 1.16,您现在可以使用源代码中的指令嵌入文件和目录。//go:embed
下面是 的软件包文档。embed
这是Carl Johnson的一篇博客文章,Go博客在软件包发布时引用了该博客。embed
您的用例听起来好像您可以从嵌入目录和使用http中受益。文件服务器
。在链接的博客文章中有一个示例。我也把它贴在下面。
此示例演示如何嵌入通过 HTTP 调用和服务的目录:static
package main
import (
"embed"
"io/fs"
"log"
"net/http"
"os"
)
func main() {
useOS := len(os.Args) > 1 && os.Args[1] == "live"
http.Handle("/", http.FileServer(getFileSystem(useOS)))
http.ListenAndServe(":8888", nil)
}
//go:embed static
var embededFiles embed.FS
func getFileSystem(useOS bool) http.FileSystem {
if useOS {
log.Print("using live mode")
return http.FS(os.DirFS("static"))
}
log.Print("using embed mode")
fsys, err := fs.Sub(embededFiles, "static")
if err != nil {
panic(err)
}
return http.FS(fsys)
}
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报