Dateien in Go-Binärdateien integrieren
Möchten Sie eine einzelne ausführbare Datei verteilen, die die erforderlichen Textdateien enthält? Go bietet Lösungen zum Einbetten von Dateien in Binärdateien, die auf verschiedene Plattformen zugeschnitten sind.
Go 1.16 und höher: go:embed-Direktive
Für Go-Versionen 1.16 und höher nutzen Sie die go:embed-Direktive. Es bietet eine elegante Möglichkeit, Dateien einzubetten:
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 und höher: Go-Generieren für Flexibilität
Für Go-Versionen 1.4 und höher können Sie darauf zurückgreifen go generieren für mehr Flexibilität. Dieser Ansatz umfasst:
Diese Technik ermöglicht das Einbetten mehrerer Textdateien mit minimaler Hardcodierung. Zum Beispiel:
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")) }
Build-Befehle:
$ go generate $ go build -o main
Das obige ist der detaillierte Inhalt vonWie kann ich Dateien in meine Go-Binärdateien einbetten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!