Go テンプレートでは、range キーワードを使用して配列を反復処理するときに、カンマ区切り文字が自動的に挿入されます各要素の間。この動作はほとんどの場合に便利ですが、目的の出力で最後の要素の後にカンマではなくピリオドが必要な場合には問題になる可能性があります。
次のプログラムを考えてみましょう:
<code class="go">package main import ( "os" "text/template" ) func main() { params := map[string]interface{}{ "items": [3]int{1, 4, 2}, } tpl := "{{range $i, $el := .items}}{{$el}},{{end}}" lister, _ := template.New("foo").Parse(tpl) lister.Execute(os.Stdout, params) }</code>
このプログラムは次を出力します:
1,4,2,
最後の要素 (2) の後にカンマがあることに注意してください。ただし、出力は次のようにしたいと考えています。
1,4,2.
これを実現するには、テンプレートを次のように変更できます。
<code class="go">tpl := "{{range $i, $el := .items}}{{if $i}},{{end}}{{$el}}{{end}}."</code>
ここでの主な違いは、{ の導入です。 {if $i}}、{{end}} コンストラクト。この条件ステートメントは、現在のループ反復が最初の反復ではないかどうかをチェックし、最初の反復である場合はコンマを出力します。これにより、コンマが配列内の要素の間にのみ挿入され、最後の要素の後には挿入されなくなります。
この変更を組み込むことにより、プログラムは次のように出力するようになります。
1,4,2.
以上がGo テンプレート範囲の最後の要素の後のカンマを避ける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。