← ко всем постам
2026-06-10 · #tooling

go:embed — упаковываем файлы в бинарник

С версии 1.16 в Go есть //go:embed — способ вшить файлы прямо в скомпилированный бинарник. Один файл на выходе, никаких внешних зависимостей при деплое.

import "embed"

//go:embed static/*
var assets embed.FS

func main() {
    http.Handle("/", http.FileServer(http.FS(assets)))
}

Вся папка static теперь внутри бинарника. Развернуть приложение — значит скопировать один файл. Для веб-сервисов с фронтендом это заметно упрощает деплой.

Работает и для одиночных файлов: //go:embed version.txt в переменную string — удобно для встраивания версии сборки.