golang打包的方法:
1、使用go-bindata打包:
go-bindata 很簡單,設計理念也不難理解。它的任務就是講靜態文件封裝在一個 Go 語言的 Source Code 裡面,然後提供一個統一的接口,你透過這個接口傳入文件路徑,它將給你返回對應路徑的文件資料。
簡單來說就是它可以把我們的靜態文件產生 .go 文件,這樣就可以編譯成二進位文件,專案啟動的時候再把這個 .go 文件再釋放成靜態檔。
使用範例:
打包整個靜態目錄,使用的時候釋放
# 目录结构 ConfigTest ├── asset │ └── asset.go 静态文件编译之后的go文件 ├── config # 静态文件目录 │ ├── rule.yaml │ └── rule.json ├── cli # 运行目录 │ ├── config 执行main释放出来的静态文件 │ │ ├── rule.yaml │ │ └── rule.json │ └── main # main.go编译之后生成的二进制执行文件 └── main 程序目录 └── main.go # 源码
執行指令將靜態檔案打包成go檔案
go-bindata -o=./asset/asset.go -pkg=asset config/... -o # 指定打包后生成的go文件路径 -pkg # 指定go文件的包名 config/... # 指定需要打包的静态文件路径
2.使用go.rice打包
go.rice 也支援打包靜態檔案到go 檔案中,但是行為和 go-bindata 很不相同。從使用角度,go.rice 其實是更方便的靜態檔案作業庫。打包靜態檔案反而是順帶的功能。
安裝
go get github.com/GeertJohan/go.rice/...
使用
go.rice 把一個目錄視為一個 rice.Box 操作
import ( "fmt" "html/template" "github.com/GeertJohan/go.rice" ) func main() { // 这里写相对于的执行文件的地址 box, err := rice.FindBox("theme/default") if err != nil { println(err.Error()) return } // 从目录 Box 读取文件 str, err := box.String("post.html") if err != nil { println(err.Error()) return } t, err := template.New("tpl").Parse(str) fmt.Println(t, err) }
指令
#go. rice 的打包指令是rice。用起來非常直接:在有使用 go.rice 操作的 go 代碼目錄,直接執行 rice embed-go:
rice embed-go rice -i "github.com/fuxiaohei/xyz" embed-go // -i 处理指定包里的 go.rice 操作
更多golang知識請關注PHP中文網golang教程欄。
以上是golang如何打包的詳細內容。更多資訊請關注PHP中文網其他相關文章!