Membenamkan fail statik ke dalam perduaan Go memastikan semua fail yang diperlukan digabungkan dalam boleh laku, menghapuskan keperluan untuk pengurusan fail luaran. Ini boleh dicapai melalui arahan go:embed atau teknik jana go.
Bermula dengan Go 1.16, arahan go:embed boleh digunakan untuk membenamkan fail terus ke dalam binari:
//go:embed hello.txt var s string
Ini membenamkan kandungan hello.txt ke dalam pembolehubah rentetan s.
Untuk versi lama Go, anda boleh membenamkan fail menggunakan go generate bersama-sama dengan skrip. Berikut ialah contoh:
Struktur Fail:
main.go:
//go:generate go run scripts/includetxt.go package main import "fmt" func main() { fmt.Println(a) fmt.Println(b) }
includetxt.go:
package main import ( "io/ioutil" "os" "strings" ) func main() { // Create the output file out, _ := os.Create("textfiles.go") out.Write([]byte("package main \n\nconst (\n")) // Iterate over .txt files in the current directory fs, _ := ioutil.ReadDir(".") for _, f := range fs { if strings.HasSuffix(f.Name(), ".txt") { // Write the embedded file contents to the output file out.Write([]byte(strings.TrimSuffix(f.Name(), ".txt") + ` = "`)) f, _ := os.Open(f.Name()) io.Copy(out, f) out.Write([]byte("`\n")) } } // Close the output file out.Write([]byte(")\n")) }
Untuk membenamkan fail:
$ go generate $ go build -o main
textfiles.go (Dihasilkan):
package main const ( a = `hello` b = `world` )
Ini membenamkan kandungan a.txt dan b.txt ke dalam binari sebagai rentetan pemalar, membolehkan mereka diakses dalam main.go sebagai a dan b, masing-masing.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membenamkan Fail Statik ke dalam Go Binari Menggunakan `go:embed` dan `go generate`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!