Go 文字範本中最後一個元素的特殊情況處理
在Go 的文字範本系統中,創造諸如「(p1, p2 , p3)"來自陣列可能具有挑戰性,特別是在最後一個正確放置逗號時
無效嘗試
無法刪除尾隨逗號的一種嘗試是:
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中文網其他相關文章!