Создать файл шаблона:
tpl.gohtml
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>The Number from Go Code is: {{.}}</h1>
</body>
</html>
и ваш main.go
package main
import (
"log"
"os"
"text/template"
)
var tpl *template.Template
func init() {
tpl = template.Must(template.ParseFiles("tpl.gohtml"))
}
func main() {
err := tpl.ExecuteTemplate(os.Stdout, "tpl.gohtml", 42)
if err != nil {
log.Fatalln(err)
}
}
В функции init вы анализируете созданный выше файл шаблона. Если у вас их много, вы можете использовать ParseGlob(pattern string) (*Template, error)
Но для этого примера вы можете проанализировать шаблон по имени.
После этого мы выполняем шаблон с именем tpl.gohtml
и распечатываем его на Stdout
и обрабатываем ошибки.
Теперь вы можете запустить код с помощью go run main.go
и получите следующий вывод:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>The meaning of life: 42</h1>
</body>
Вы можете видеть, что последний аргумент функции ExecuteTemplate()
- это данные, которые вы передали в шаблон. Вы также можете использовать срезы, карты или самостоятельно созданные сложные типы данных для шаблона и выполнять итерации по нему.
main.go с ломтиком
package main
import (
"log"
"os"
"text/template"
)
var tpl *template.Template
func init() {
tpl = template.Must(template.ParseFiles("tpl.gohtml"))
}
func main() {
sages := []string{"This", "is", "a", "string", "slice"}
err := tpl.Execute(os.Stdout, sages)
if err != nil {
log.Fatalln(err)
}
}
и соответствующий шаблон может выглядеть так
tpl.gohtml
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Slice Data</title>
</head>
<body>
<ul>
{{range $index, $name := .}}
<li>{{$index}} - {{$name}}</li>
{{end}}
</ul>
</body>
</html>
Это даст вам следующий вывод:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Slice Data</title>
</head>
<body>
<ul>
<li>0 - This</li>
<li>1 - is</li>
<li>2 - a</li>
<li>3 - string</li>
<li>4 - slice</li>
</ul>
</body>
Если вы хотите создать html-файлы с этим кодом, просто используйте go run main.go > outputfilename.html
Golang Web Dev Github. Источники удемского курса
Шаблоны Go