Go テキスト テンプレートの最後の要素に対する特殊なケースの処理
Go のテキスト テンプレート システムでは、"(p1, p2,配列から p3)" を抽出するのは、特に最後の行にカンマを正しく配置する場合に困難になることがあります。 element.
非動作試行
末尾のカンマの削除に失敗する試行の 1 つは次のとおりです:
import ( "text/template" "os" ) func main() { ip := []string{"p1", "p2", "p3"} temp := template.New("myTemplate") _, _ = temp.Parse(paramList) temp.Execute(os.Stdout, ip) } const paramList = "{{ $i := . }}({{ range $i }}{{ . }}, {{end}})"
解決策
このパズルは特別なツールを利用して解くことができます。テンプレートの if ステートメントの構文。 Go if ステートメントとは異なり、テンプレート if はゼロ値をテストできます。これにより、次のトリックが可能になります:
import ( "text/template" "os" ) func main() { ip := []string{"p1", "p2", "p3"} temp := template.New("myTemplate") _, _ = temp.Parse(paramList) temp.Execute(os.Stdout, ip) } const paramList = "{{ $i := . }}({{ range $i }}{{ if $index }},{{end}}{{ . }}{{end}})"
魔法は次の行にあります:
{{ if $index }},{{end}}
$index 変数は範囲の反復中に自動的に割り当てられ、範囲のテストに使用されます。最後の要素。インデックスがゼロ以外の場合 (最後の要素ではないことを意味する)、コンマが挿入されます。これにより、最後の要素の末尾にカンマがないことが保証されます。
以上がGo テキスト テンプレートの文字列連結で末尾のカンマを避ける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。