"Glob"は「掴む」を意味する通り、
引数に指定した「パターンに合致する」複数のファイルを
templateとして取り込む事ができます。
階層が次のようになっているとします。
main.go
templates
blabla.gohtml
tpl1.gohtml
tpl2.gohtml
main関数が次のように書かれていると、
index.htmlには、blabla.gohtmlの内容がコピーされます。
tpl, err := template.ParseGlob("templates/*") // templates以下にある全てのファイルを取り込む
if err != nil {
log.Fatal(err)
}
nf, err := os.Create("index.html")
if err != nil {
log.Fatal(err)
}
err = tpl.Execute(nf, nil) // blabla.gohtmlの内容がコピーされる
if err != nil {
log.Fatal(err)
}
template.ParseGlob()をした上で、Executeメソッドを使用した場合、
アルファベット昇順で1番目のファイルがコピーの対象になります。
template.ParseGlob()は複数ファイルを取り込む事ができますので、
ExecuteTemplate()を用いれば、コピーするファイルを選ぶ事ができます。
tpl, err := template.ParseGlob("templates/*")
if err != nil {
log.Fatal(err)
}
nf, err := os.Create("index.html")
if err != nil {
log.Fatal(err)
}
err = tpl.ExecuteTemplate(nf, "tpl1.gohtml", nil) // tpl1.gohtmlの内容をindex.htmlにコピー
if err != nil {
log.Fatal(err)
}
err = tpl.ExecuteTemplate(os.Stdout, "tpl2.gohtml", nil) // tpl2.gohtmlの内容を画面出力
if err != nil {
log.Fatal(err)
}