golang
template
echo

Golang の echo を使う (template)

echo で template を使う例です。
次のページを参考にしました。
【Go】Echoでのテンプレート(html/template)の使い方メモ

次のようにファイルを配置します。

├── server.go
└── views
    ├── header.html
    └── page1.html
server.go
// ---------------------------------------------------------------------
/*

    server.go

                        Jun/11/2018
*/
// ---------------------------------------------------------------------
package main

import(
  "html/template"
  "net/http"
  "io"

  "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)
}

// ---------------------------------------------------------------------
// サイトで共通情報
type ServiceInfo struct {
  Title string
}

var serviceInfo = ServiceInfo {
  "サイトのタイトル",
}

// ---------------------------------------------------------------------
func main() {

  t := &Template{
    templates: template.Must(template.ParseGlob("views/*.html")),
  }

  e := echo.New()

  e.Renderer = t

  e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "こんにちは!")
    })

  e.GET("/page1", func(c echo.Context) error {
    // テンプレートに渡す値

    data := struct {
      ServiceInfo
      Content_a string
      Content_b string
      Content_c string
      Content_d string
    } {
      ServiceInfo: serviceInfo,
      Content_a: "雨が降っています。",
      Content_b: "明日も雨でしょうか。",
      Content_c: "台風が近づいています。",
      Content_d: "Jun/11/2018",
    }
    return c.Render(http.StatusOK, "page1", data)
  })

  e.Logger.Fatal(e.Start(":1323"))
}

// ---------------------------------------------------------------------
views/header.html
{{define "header"}}
  <h1>{{.ServiceInfo.Title}}</h1>
{{end}}
views/page1.html
{{define "page1"}}
  {{template "header" .}}
<blockquote>
  <div>{{.Content_a}}</div>
  <div>{{.Content_b}}</div>
  <div>{{.Content_c}}</div>
  <div>{{.Content_d}}</div>
</blockquote>
{{end}}

サーバーの起動

go run server.go

クライアントで、

http://localhost:1323/page1
にアクセスします。
echo_jun1102.png