Go embed.FS: встроить файлы в бинарник

Категория: Backend · Язык: Go · Обновлено:

Пакет embed в Go позволяет включить статические файлы в бинарник во время сборки. Это удобно для шаблонов, конфигураций по умолчанию и ресурсов, которые должны поставляться вместе с программой без отдельной папки рядом с executable. Возможность доступна начиная с Go 1.16; маска должна совпасть хотя бы с одним файлом в исходном пакете.

Прочитать файл из embed.FS

Положите текст в assets/message.txt, затем используйте директиву //go:embed перед переменной:

Go
package main

import (
	"embed"
	"fmt"
	"log"
)

//go:embed assets/message.txt
var assets embed.FS

func main() {
	message, err := assets.ReadFile("assets/message.txt")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(string(message))
}

Путь в ReadFile указывается относительно директории пакета, где объявлена переменная. Встроенные данные доступны только для чтения и включаются в бинарник; не размещайте там секреты, которые должны меняться между окружениями. Директивы //go:embed распознаются компилятором, поэтому не переносите их в обычный комментарий или строку.

Официальная документация: пакет embed.