<br/>
目標: 改行をいくつかの文字列のタグに変更したい HTTP サーバーで複数のテンプレートを使用します。
簡素化された例:
2 つのテンプレートがa.tmpl
あり、b.tmpl
次のようになります。
Template a {{dosomething}}
(他のテンプレートも同様です)。どちらも というディレクトリにありtemplates
ます。\n
-><br />
置換 (dosomething
上記)を行う関数を作成する必要があると思います。
これは私の(動作していない)サンプルコードです:
package main
import (
"log"
"text/template"
)
func main() {
// funcMap := template.FuncMap{
// "dosomething": func() string { return "done something" },
// }
templates, err := template.ParseGlob("templates/*.tmpl")
if err != nil {
log.Fatal(err)
}
log.Printf("%#v", templates)
}
エラーメッセージは次のとおりです。
2013/03/04 20:08:19 template: a.tmpl:1: function "dosomething" not defined
exit status 1
これは理にかなっています。なぜなら、解析中は関数dosomething
がわからないからです。
- 複数のテンプレートで関数を使用するにはどうすればよいですか? この質問への答えはここにあるので、唯一の方法ですか?
- これは正しいアプローチですか?ドキュメントのタイトルの例のように、いくつかの文字列のテキストを変更したいことを思い出してください ( http://golang.org/pkg/text/template/#FuncMap - Example (Func))?
b.tmpl
次のコードで アクセスするにはどうすればよいですか。package main import ( "log" "text/template" ) func main() { funcMap := template.FuncMap{ "dosomething": func() string { return "done something" }, } t, err := template.New("a.tmpl").Funcs(funcMap).ParseGlob("templates/*.tmpl") if err != nil { log.Fatal(err) } log.Printf("%#v", t) }