[Go] HTMLテンプレートを使って表示

public/view/hello.html

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {{define "hello"}}Hello, {{.}}!{{end}}
</body>
</html>

main.go

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
26
27
28
29
30
import (
    "html/template"
    "io"
    "net/http"
 
    "github.com/labstack/echo"
)
 
type Template struct {
    templates *template.Template
}
 
func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
    return t.templates.ExecuteTemplate(w, name, data)
}
 
func Hello(c echo.Context) error {
    return c.Render(http.StatusOK, "hello", "World")
}
 
func main(){
    e := echo.New()
    t := &Template{
        templates: template.Must(template.ParseGlob("public/views/*.html")),
    }
    e.Renderer = t
    e.GET("/hello", Hello)
 
    e.Logger.Fatal(e.Start(":8000"))
}

うーむ、出来たのはわかったけど、イマイチ仕組みがわからん