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 — удобно для встраивания версии сборки.