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.

questionAnswers(1)

yourAnswerToTheQuestion