Untersuchung von Methoden um Dateien in Go mit embed zu laden

Untersuchung von Methoden um Dateien in Go mit embed zu laden

16. April 2025

Es gibt verschiedene Möglichkeiten, Dateien in Go zu laden.

Man kann Dateien mittels os.ReadFile() lesen oder das embed-Paket verwenden, um sie einzubinden.

Obwohl die Verwendungszwecke leicht unterschiedlich sind, ist das embed-Paket besonders nützlich, da es ermöglicht, Dateien bereits beim Build einzubinden – was vor allem bei der Distribution von Vorteil ist.

Betrachten wir ein einfaches Beispiel: Erstellen wir eine txt-Datei wie folgt

hello.txt
Hello, World!

Nun holen wir uns diese Datei mittels des embed-Pakets:

main.go
package main

import (
    "fmt"
    _ "embed"
)

//go:embed hello.txt
var content string

func main() {
    fmt.Println(content)
}

Wird der obige Code ausgeführt, erhält man folgendes Ergebnis:

Hello, World!

Es können nicht nur txt-Dateien eingebunden werden, sondern praktisch alle Dateitypen wie html, css, js, yaml usw.

Allerdings sollte man beachten, dass das Einbinden sehr großer Dateien zu einem erheblichen Speicherverbrauch führen kann.