溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go怎么打包附件內容到執行文件

發布時間:2023-03-17 13:47:46 來源:億速云 閱讀:115 作者:iii 欄目:開發技術

本篇內容主要講解“Go怎么打包附件內容到執行文件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go怎么打包附件內容到執行文件”吧!

    打包方法

    直接在文件中定義

    最容易想到的, 就是直接在.go文件中定義字符串, 比如這樣:

    var text = `xxx`

    如此處理必然是可以的, 但有些不方便.

    • .sql文件可能是通過mysqldump導出的, 每次導出之后還需要將內容復制到.go文件中

    • 在編輯.sql文件的時候, IDE會提供語法高亮及輸入提示, 這些在字符串中都是沒有的

    通過工具轉換

    既然我們想要將內容直接放在文件中, 同時又想將內容打包到二進制中. 是否可以通過腳本處理呢? 腳本從附件中讀取內容, 并寫入到.go文件中.

    有一個名為go-bindata 的工具, 做的就是這樣的事情. 具體操作可自行搜索, 這里不做贅述.

    但是這個工具在3年前就不再更新了, 為什么呢? 因為官方支持了.

    go build

    或許是因為這樣的呼聲太大, 在go 1.16版本開始, 官方增加了embed包對這種操作進行了支持, 可以在編譯階段直接將靜態資源打包到二進制中.

    其大致用法如下:

    import "embed"
    
    // 將內容直接打包到二進制文件中
    //go:embed test.txt
    var test string
    
    //go:embed test.txt
    var test1 []byte
    
    // 同時打包多個文件. 后接文件名或目錄
    //go:embed test.txt dir
    // 作為文件
    var test2 embed.FS
    
    func main() {
    	// 輸出文件內容
    	println(test)
    	println(string(test1))
    	
    	b, err := test2.ReadFile("test.txt")
    	if err != nil {
    		panic(err)
    	}
    	println(string(b))
    }

    其中string/[]byte用來打包單個文件, embed.FS可以打包一批文件. 使用也比較簡單, 看下文檔就行了.

    至此, Go程序已經可以天然且方便的將資源文件進行打包了.

    到此,相信大家對“Go怎么打包附件內容到執行文件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    go
    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女