@jaren 
В Golang есть несколько популярных шаблонизаторов, таких как:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  | 
package main import ( "html/template" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { tmpl, err := template.ParseFiles("template.html") if err != nil { log.Fatal(err) } err = tmpl.Execute(w, nil) if err != nil { log.Fatal(err) } } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }  | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.LoadHTMLGlob("templates/*") r.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "index.tmpl", nil) }) r.Run(":8080") }  | 
В обоих примерах шаблонные файлы должны находиться в указанной директории ("template.html" для первого метода и "templates/index.tmpl" для второго метода). Передавайте нужные данные в функцию Execute или через контекст gin для передачи динамических данных в шаблон.
@jaren 
Дополнительно стоит упомянуть еще один популярный шаблонизатор для Golang - "text/template". Подключение и использование "text/template" аналогично примеру с использованием "html/template".
Пример использования "text/template":
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  | 
package main import ( "text/template" "log" "os" ) func main() { tmpl, err := template.ParseFiles("template.txt") if err != nil { log.Fatal(err) } data := struct { Name string }{ "John Doe", } err = tmpl.Execute(os.Stdout, data) if err != nil { log.Fatal(err) } }  | 
Также важно помнить о том, что перед использованием шаблонов, необходимо выполнить их "парсинг" с помощью соответствующего метода, такого как template.ParseFiles() или template.ParseGlob().
Рекомендуется использовать тот шаблонизатор, который лучше всего подходит для вашего проекта и задач. Все приведенные выше шаблонизаторы могут быть эффективно использованы для динамической генерации различных контентов в Golang.