ホームページ >バックエンド開発 >Golang >Go テンプレートの範囲ループで末尾のカンマを削除するにはどうすればよいですか?

Go テンプレートの範囲ループで末尾のカンマを削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-09 17:19:09389ブラウズ

How to Remove the Trailing Comma in Go Template Range Loops?

Go テンプレート: 範囲ループの最後のカンマを削除する

Go テンプレートでは、要素の範囲を反復処理する場合、カンマは各要素の後に自動的に追加されます。これは、末尾のカンマのない値のリストを生成する場合など、特定のシナリオでは望ましくない場合があります。

最後のカンマを削除する 1 つの方法は、範囲ループ中に要素のインデックスにアクセスすることです。ただし、マップは要素のインデックスを提供しないため、このアプローチはマップには適用できません。

Go 1.11 を使用した解決策

Go 1.11 以降では、次のことが可能です。テンプレート自体内のテンプレート変数の値を変更します。これにより、次のテンプレートで最後のカンマを削除できます:

{{$first := true}}
{{range $key, $value := $}}
    {{if $first}}
        {{$first = false}}
    {{else}}
        ,
    {{end}}
    key:{{$key}} value:{{$value}}
{{end}}

このテンプレートは、最初に true に設定される変数 $first を定義します。範囲ループ中に、$first が true の場合、false に設定され、カンマは追加されません。後続のすべての反復では、要素の前にコンマが追加されます。

修正例

これは、質問の例の更新バージョンで、上記のテクニック:

type Map map[string]string
m := Map{
    "a": "b",
    "c": "d",
    "e": "f",
}
const temp = `{{$first := true}}{{range $key, $value := $}}{{if $first}}{{$first = false}}{{else}}, {{end}}key:{{$key}} value:{{$value}}{{end}}`
t := template.Must(template.New("example").Parse(temp))
t.Execute(os.Stdout, m)

このテンプレートは、以下:

key:a value:b, key:c value:d, key:e value:f

以上がGo テンプレートの範囲ループで末尾のカンマを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。