Встраивание файлов в бинарник через go:embed
Директива //go:embed встраивает файлы прямо в бинарник на этапе компиляции — миграции, шаблоны, статику фронтенда, конфигурации по умолчанию. Это убирает целый класс проблем эксплуатации: нет расхождения между бинарником и файлами рядом с ним, нет вопроса «а куда положить шаблоны в контейнере», деплой снова сводится к копированию одного файла. Правила жёсткие и все проверяются компилятором: директива стоит непосредственно перед объявлением переменной, пакет embed должен быть импортирован (для string и []byte — пустым импортом), пути указываются относительно каталога пакета и не могут выходить наверх через ... Типов три: string, []byte и embed.FS для набора файлов. Важная тонкость: по умолчанию файлы, начинающиеся с точки или подчёркивания, не попадают в шаблон каталога — для них нужен префикс all:. И встроенное неизменяемо: embed.FS доступна только для чтения.