text/template

下記の内容は以下のバージョンのgoで確認しています。

Note

go1.10.3 linux/amd64

参考: https://golang.org/pkg/text/template/

概要

go標準のtextのためのテンプレートライブラリ。 HTML用に”html/template”もある。 if-elseやforのような繰り返しも使える。

Note

与えるテンプレートはUTF-8エンコードであることが必須。

import

import (
    "text/template"
)

テンプレートへの埋め込み

テンプレートは以下のように{{}}で囲んで変数を書く

Profile:
    - Name:{{.Name}}
    - Age:{{.Age}}
package main

import (
    "bytes"
    "fmt"
    "text/template"
)

type Person struct {
    Name string
    Age  int
}

func embed(tmpl_path string, d *Person) string {
    var res bytes.Buffer
    // Mustはエラーが起きたときにpanicを起こす
    tmpl := template.Must(template.ParseFiles(tmpl_path))

    err := tmpl.Execute(&res, d)

    if err != nil {
            fmt.Printf("Failed to Execute template")
            return ""
    }
    return res.String()
}

func main() {
    tmpl_path := "sample.tmpl"
    d := Person{Name: "John", Age: 20}
    res := embed(tmpl_path, &d)
    fmt.Println(res)
}