Tratamento de caso especial para o último elemento de um intervalo nos modelos de texto do Google Go
Eu estou tentando escrever uma string parecida com isso usando o sistema de templates do go: (p1, p2, p3), onde p1, p2, ... vem de um array no programa. Meu problema é como colocar a vírgula corretamente para o último (ou o primeiro) elemento.
Minha versão não funcional que gera (p1, p2, p3,) se parece com isso:
package main
import "text/template"
import "os"
func main() {
ip := []string{"p1", "p2", "p3"}
temp := template.New("myTemplate")
temp,_ = temp.Parse(paramList)
temp.Execute(os.Stdout, ip)
}
const paramList =
`{{ $i := . }}({{ range $i }}{{ . }}, {{end}})`
Minha melhor pista até agora é encontrada aquihttp://golang.org/pkg/text/template/ na seguinte declaração:
Se uma ação de "intervalo" inicializa uma variável, a variável é definida para os sucessivos elementos da iteração. Além disso, um "intervalo" pode declarar duas variáveis, separadas por uma vírgula:
$index, $element := pipeline
Nesse caso, $ index e $ element são definidos para os valores sucessivos do índice de matriz / fatia ou elemento e chave do mapa, respectivamente. Observe que, se houver apenas uma variável, ela será designada ao elemento; isto é oposto à convenção nas cláusulas do intervalo Go. onde é sugerido que o índice
Isso sugere que é possível se apossar do índice na iteração, mas não consigo descobrir o que significa o intervalo declarando duas variáveis e onde no modelo essas variáveis devem ser declaradas.