Да, в Go есть возможность встраивать файлы, включая HTML, в исполняемый файл. Это можно сделать с использованием пакета `embed`, который был добавлен в Go 1.16. С его помощью вы можете включить HTML-файлы непосредственно в ваш бинарный файл во время компиляции.
Вот как это можно сделать:
1. Добавьте в ваш проект пакет `embed`, если вы еще этого не сделали. Убедитесь, что вы используете Go версии 1.16 или выше.
2. Используйте директиву `//go:embed`, чтобы встроить HTML-файлы (или другие ресурсы) в ваш код. Например:
```go
package main
import (
"embed"
"github.com/gin-gonic/gin"
"net/http"
)
//go:embed web/templates/*
var templates embed.FS
func serveHTTP() {
router := gin.Default()
// Используйте встроенную файловую систему
router.SetFuncMap(template.FuncMap{
// Здесь вы можете добавить свои функции-шаблоны, если нужно
})
router.LoadHTMLFiles(templates, "web/templates/index.html") // Замените на ваши HTML-файлы
router.GET("/", HTTPAPIServerIndex)
router.GET("/stream/player/:uuid", HTTPAPIServerStreamPlayer)
router.POST("/stream/receiver/:uuid", HTTPAPIServerStreamWebRTC)
router.GET("/stream/codec/:uuid", HTTPAPIServerStreamCodec)
// Остальной код вашего сервера
}
```
### Обратите внимание:
1. Директива `//go:embed` обязательна и должна быть написана перед объявлением переменной, в которой вам нужно хранить встраиваемые файлы.
2. В примере кода выше я использовал `LoadHTMLFiles`, чтобы загрузить HTML-файлы из встраиваемой файловой системы. Правильный путь к файлам зависит от их расположения, и вам может потребоваться адаптировать пример к вашим конкретным шаблонам.
3. Убедитесь, что все ваши HTML-файлы находятся в указанной папке или папках, чтобы они были встроены в ваш бинарный файл.
Используя этот метод, вам не нужно беспокоиться о том, в какой директории находится ваш исполняемый файл, потому что все необходимые файлы будут встроены в него.