溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

golang打包成go文件的方法有哪些?

發(fā)布時(shí)間:2020-05-22 17:24:21 來源:億速云 閱讀:310 作者:鴿子 欄目:編程語(yǔ)言

golang打包的方法:

1、使用go-bindata進(jìn)行打包:

go-bindata 很簡(jiǎn)單,設(shè)計(jì)理念也不難理解。它的任務(wù)就是講靜態(tài)文件封裝在一個(gè) Go 語(yǔ)言的 Source Code 里面,然后提供一個(gè)統(tǒng)一的接口,你通過這個(gè)接口傳入文件路徑,它將給你返回對(duì)應(yīng)路徑的文件數(shù)據(jù)。

簡(jiǎn)單來說就是它可以把我們的靜態(tài)文件生成 .go 文件,這樣就可以編譯成二進(jìn)制文件,項(xiàng)目啟動(dòng)的時(shí)候再把這個(gè) .go 文件再釋放成靜態(tài)文件。

使用示例:

打包整個(gè)靜態(tài)目錄,使用的時(shí)候釋放

# 目錄結(jié)構(gòu)
ConfigTest
├── asset
│   └── asset.go 靜態(tài)文件編譯之后的go文件
├── config # 靜態(tài)文件目錄
│   ├── rule.yaml
│   └── rule.json
├── cli # 運(yùn)行目錄
│   ├── config 執(zhí)行main釋放出來的靜態(tài)文件
│   │   ├── rule.yaml
│   │   └── rule.json
│   └── main # main.go編譯之后生成的二進(jìn)制執(zhí)行文件
└── main 程序目錄
    └── main.go # 源碼

執(zhí)行命令將靜態(tài)文件打包成go文件

go-bindata -o=./asset/asset.go -pkg=asset config/...

-o # 指定打包后生成的go文件路徑
-pkg # 指定go文件的包名
config/... # 指定需要打包的靜態(tài)文件路徑

2、使用go.rice打包

go.rice 也支持打包靜態(tài)文件到 go 文件中,但是行為和 go-bindata 很不相同。從使用角度,go.rice 其實(shí)是更便捷的靜態(tài)文件操作庫(kù)。打包靜態(tài)文件反而是順帶的功能。

安裝

go get github.com/GeertJohan/go.rice/...

使用

go.rice 把一個(gè)目錄認(rèn)為是一個(gè) rice.Box 操作

import (
    "fmt"
    "html/template"

    "github.com/GeertJohan/go.rice"
)

func main() {
    // 這里寫相對(duì)于的執(zhí)行文件的地址
    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 代碼目錄,直接執(zhí)行 rice embed-go:

rice embed-go
rice -i "github.com/fuxiaohei/xyz" embed-go // -i 處理指定包里的 go.rice 操作

以上就是golang如何打包的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI