Heim > Backend-Entwicklung > Golang > Wie kann ich Dateien in meine Go-Binärdateien einbetten?

Wie kann ich Dateien in meine Go-Binärdateien einbetten?

Linda Hamilton
Freigeben: 2024-12-31 21:17:13
Original
814 Leute haben es durchsucht

How Can I Embed Files into My Go Binaries?

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))
Nach dem Login kopieren

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:

  1. Erstellen eines Go-Skripts, das Textdateien liest und Zeichenfolgenliterale generiert.
  2. Verwenden eines go:generate-Kommentars in Ihrer Hauptdatei, um das Skript aufzurufen.

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)
}
Nach dem Login kopieren

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"))
}
Nach dem Login kopieren

Build-Befehle:

$ go generate
$ go build -o main
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage