Das einbetten von Dateien in Golang binaries?
Habe ich einige text-Datei, die ich Lesen aus meinem Programm Gehen. Ich möchte zum versenden einer einzigen ausführbaren Datei, ohne Lieferung, die text-Datei zusätzlich.
Wie bette ich ihn in die Kompilierung unter Windows und Linux?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden go-bindata. Aus der README:
Da Gehen 1.4, die Sie verwenden können, gehen generieren wenn Sie mehr Flexibilität benötigen.
Wenn du mehr als eine text-Datei oder text-Datei kann sich ändern, wollen Sie vielleicht gar nicht hart Kodieren die text-Datei, aber gehören Sie zur compile-Zeit.
Wenn Sie die folgenden Dateien:
Und möchten Zugriff auf die Inhalte aller .txt-Dateien in main.gehen, können Sie auch einen speziellen Kommentar mit einem go-Befehl erstellen.
main.gehen
Den go-generate-Befehl wird das Skript ausgeführt, nachdem
go:generate
. In diesem Fall wird ein go-Skript liest alle text-Dateien und gibt Sie als string-Literale in eine neue Datei. Ich übersprungen die Fehlerbehandlung für kürzeren code.Skript/includetxt.gehen
Kompilieren alle .txt-Dateien in Ihre exectutable:
Nun Ihre Verzeichnis-Struktur wird wie folgt Aussehen:
Wo Textdateien.gehen wurde erzeugt, indem go generieren und Skript/includetxt.gehen
Textdateien.gehen
Und läuft main gibt
Dies funktioniert gut, so lange, wie Sie die Kodierung UTF-8 codierte Dateien. Wenn Sie Kodieren möchten anderen Dateien, die Sie die volle macht der Sprache (oder einem anderen tool) zu tun. Ich verwendet diese Technik, um hex codieren png:s in einer einzigen ausführbaren Datei. Das erfordert eine geringfügige änderung includetxt.gehen.
go generate
? Konnte nichtgo build
kümmern ausführen-Befehl, wenn es Hinweise//go:generate ...
Kommentar?Können Sie eine
Stringliteral
definieren den text als eine Konstante oder eine variable. String-Literale definiert werden, indem man den string mit back-quotes. z.B. `string`.Beispiel:
go-bindata
sieht cool aus, aber diese Methode ist viel einfacher.%
.Ich habe eine einfache Funktion zum Lesen eine externe Vorlage in einem
go generate
führen und zu generieren, Gehen Sie code aus. Eine Funktion die Rücksendung der Muster als string generiert. Kann man dann analysieren der zurückgegebenen Zeichenfolge Vorlage mittpl, err := template.New("myname").Parse(mynameTemplate())
Habe ich diesen code auf github. Vielleicht möchten Sie versuchen, https://github.com/wlbr/templify
Sehr einfach, aber funktioniert für mich ganz gut.
Basierend auf @CoreyOgburn Kommentar und das Github Kommentar, der folgende Codeausschnitt erstellt wurde:
und führen
und anschließend
sollte eine Binärdatei, die die Dateien enthält, die