前言:

Go语言程序发布过程中,可能会调用到静态资源,如http接口返回的html文件。这个时候把资源文件打包进Go语言的可执行文件中,可以使go程序更方便的发布和分享。需要说明的是,打包静态文件不是必须要做的,也是不所有项目都有这样的要求。只有部份需要把资源文件加密的情况下才需要如此这般操作。

安装packr库:

go get -u github.com/gobuffalo/packr

使用示例:

目录结构:

代码:

package main

import (
	"fmt"
	"github.com/360EntSecGroup-Skylar/excelize"
	"github.com/gobuffalo/packr"
)

func main() {
	box := packr.NewBox("./templates")
	//s, _ := box.FindString("T1.xlsx")
	s1,_:=box.Open("T1.xlsx")


	f, _ := excelize.OpenReader(s1)
	rows:= f.GetRows("Sheet1")

	for{
		fmt.Println(rows)
	}
}

运行结果:

参考以上代码,将程序打包成可执行文件即可以将资源文件打包到可执行文件中。其中packr.NewBox("./templates")这个函数就是打包资源文件的函数。参考以下api,可以根据实际情况调用:

        box := packr.NewBox("./templates") //打包静态资源文件
	s, _ := box.FindString("T1.xlsx") //读取资源文件为字符串
	s0,_:=box.Find("T1.xlsx") //读取资源文件为byte切片
	s1,_:=box.Open("T1.xlsx") //读取资源文件为io.Reader