Go by範例:Embed 指令

//go:embed編譯器指令,可在建立時間讓程式能包含任意的檔案及資料夾在 Go 二進位檔中。在此處 了解更多 embed 指令。

package main

導入 embed 套件;如果您沒有使用此套件中的任何已匯出的識別碼,則可以使用 _ "embed" 進行空白匯入。

import (
    "embed"
)

embed 指令接受相對於包含 Go 原始碼檔案的目錄的路徑。此指令將檔案的內容嵌入到它之後的 string 變數中。

//go:embed folder/single_file.txt
var fileString string

或者將檔案的內容嵌入到 []byte 中。

//go:embed folder/single_file.txt
var fileByte []byte

我們也可以使用通配符嵌入多個檔案甚至資料夾。這會使用 embed.FS 類型 的變數,其中包含一個簡單的虛擬檔案系統。

//go:embed folder/single_file.txt
//go:embed folder/*.hash
var folder embed.FS
func main() {

列印 single_file.txt 的內容。

    print(fileString)
    print(string(fileByte))

從嵌入的資料夾中擷取一些檔案。

    content1, _ := folder.ReadFile("folder/file1.hash")
    print(string(content1))
    content2, _ := folder.ReadFile("folder/file2.hash")
    print(string(content2))
}

使用這些指令來執行範例。(注意:由於 Go playground 的限制,此範例僅能您的本機電腦上執行。)

$ mkdir -p folder
$ echo "hello go" > folder/single_file.txt
$ echo "123" > folder/file1.hash
$ echo "456" > folder/file2.hash
$ go run embed-directive.go
hello go
hello go
123
456

下一個範例:測試與效能分析