將檔案合併到 Go 二進位檔案
想要散佈包含必要文字檔案的單一執行檔? Go 提供了針對各種平台客製化的將檔案嵌入二進位檔案的解決方案。
Go 1.16 及更高版本:go:embed 指令
對於 Go 版本 1.16 及更高版本,利用去:嵌入指令。它提供了一種優雅的嵌入文件的方式:
import "embed" //go:embed hello.txt var s string print(s) //go:embed hello.txt var b []byte print(string(b)) //go:embed hello.txt var f embed.FS data, _ := f.ReadFile("hello.txt") print(string(data))
Go 1.4 及更高版本:gogenerate 以獲得靈活性
對於Go 版本1.4 及更高版本,您可以求助於去生成以獲得更大的靈活性。此方法涉及:
此技術可以使用最少的硬編碼嵌入多個文字檔案。例如:
main.go
package main import "fmt" //go:generate go run scripts/includetxt.go func main() { fmt.Println(a) fmt.Println(b) }
script/includetxt.go
package main import ( "io" "io/ioutil" "os" "strings" ) func main() { fs, _ := ioutil.ReadDir(".") out, _ := os.Create("textfiles.go") out.Write([]byte("package main \n\nconst (\n")) for _, f := range fs { if strings.HasSuffix(f.Name(), ".txt") { out.Write([]byte(strings.TrimSuffix(f.Name(), ".txt") + " = `")) f, _ := os.Open(f.Name()) io.Copy(out, f) out.Write([]byte("`\n")) } } out.Write([]byte(")\n")) }
構建指令:
以上是如何將文件嵌入到我的 Go 二進位檔案中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!