DRYな備忘録

Don't Repeat Yourself.

【Go言語】html/templateパッケージの使い方メモ

メモ

  • template.Template型のstructを扱う
  • Newなどして得る
  • Parseメソッドでテンプレート部分を解釈させる
  • Executeで変数を当て込める

サンプル

package main

import "html/template"

import "fmt"
import "bytes"

func main() {

    // *template.Templateのオブジェクトをつくる
    foo := template.New("foo")
 
    // テンプレート文字列を食わせる
    foo.Parse("<b>{{.hoge}}</b>")
 
    // io.Writerインターフェースを満たした何かを準備する
    var buf1 bytes.Buffer
    // たとえばこれがhttp.ResponseWriterなら、
    // そのままレスポンスに流し込めるということなので良い感じ

    // データを当てる
    foo.Execute(&buf1, map[string]string{"hoge":"ほげえ"})

    // 結果をstringで得る
    fmt.Println(buf1.String())

    // 以下は、当てるデータはstructでもいいよという話
    type Person struct {
        Name string
        Age  int
    }
    bar, _ := template.New("bar").Parse("<h1>{{.Name}}</h1><span>{{.Age}}さい</span>")
    yukarin := &Person{"たむらゆかりさん",17}
    var buf2 bytes.Buffer
    bar.Execute(&buf2, yukarin)
    fmt.Println(buf2.String())
}

Playground : Go Playground

雑感

  • がんばる

DRY