i++

プログラム系のメモ書きなど

golang : template で変数を利用した前後のスペース、改行をなくす

go の text/template パッケージの Text and Spaces に書かれているとおり、前のスペースをなくすには {{- を、後ろのスペースをなくすには -}} のように - をつける(アクセスする変数と - の間のスペースは必須で、括弧と - の間にスペースはいれてはいけない)。

template 中、range でスライスやマップをループするときの出力調整などに。

この方法はスペースと改行を区別せず、連続している空白を全て消すことに注意。

{{ range $ }}
    {{ . }}
{{ end }}

のような - のないテンプレートに要素が "A", "B", "C" というスライスを与えて実行すると

    A

    B

    C

という出力になり、テンプレートを

{{ range $ -}}
    {{ . }}
{{ end -}}

のように変えると

A
B
C

になる(range $ -}}- が、同じ行の後ろに続く改行だけでなく次の行の {{.}} の前のスペースも消している)。