風で飛んでいくチラ裏

気ままに雑記メモ書き殴り。古い記事は別blogからの引っ越しなのでレイアウトがアレです。

text/templateで配列の配列をもつ構造体の配列をもつ構造体を表示したい場合

golangで text/template を使用して文字を出力する場合で 渡すオブジェクトに、オブジェクトの配列(スライス)が含まれていて、 かつそのオブジェクト内にも配列(スライス)が含まれていた場合の表示方法。

文字で書くとわけわかめだがこんなの。

type piyo struct {
    Array    [4][4]int
}

type hoge struct {
    piyos    [4]piyo
}

hoge.piyos[0].Array[0][0] にアクセスする場合の テンプレート側の書き方は、templateにhogeを渡したとして、

{{with index .piyos 0}}{{index .Array 0 0}}{{end}}

です。
HTML出力にtemplateを使用する場合は html/template を使いましょう。

なんというか、言語内は素晴らしく直感的なのに、 なんでこういうところがあまり直感的に見えないフォーマットなんだろう…。

参考