愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

Martiniでtemplateのデリミタがclient sideのそれと被るのを回避する

最近、「個人プロジェクトだし、別にどの言語で書いてもいいや」というようなものについては試しにgolangで書いてみることが多くなった。単なる素振り。

で、それがWebアプリである時は codegangsta/martini · GitHub を使うわけだが、これに限らずgolangのtemplateではmustache的なアレ ( {{ }} のこと ) がデリミタであるのが基本である。

client sideのtemplateが同様のデリミタを採用していると爆死するので、このように回避する。

    m := martini.Classic()
    m.Use(render.Renderer(render.Options{
        Layout: "layout",
        Delims: render.Delims{"[[", "]]"},
    })) 

martiniを使ってない場合、特に組み込みのtemplateをそのまま使っている場合は、まあドキュメントでも自分で読んでくれい。

golangのいいところ

っていうのは、恐らく、「おめーらはうだうだ言うかもしんないけど、俺らの経験から言えばこの言語機能はこれ位で実用上はそこまで問題ないし、その上で充分効率的に実装できるわー」という非常にレベルの高い割り切りなんだろうなー、と。

The Go Programming Language Phrasebook (Developer's Library)

The Go Programming Language Phrasebook (Developer's Library)

まだ全部読み切ってないけど、↑はどうやら中々いい本です。

日本語訳は(Amazonのレビューを全面的に信用するのはありえないと思いつつも)地雷の可能性があるので原著の方がよいでしょう。