Specjalne leczenie przypadku ostatniego elementu zakresu w szablonach tekstowych Google Go

Próbuję napisać łańcuch wyglądający tak, używając systemu szablonów go: (p1, p2, p3), gdzie p1, p2, ... pochodzi z tablicy w programie. Moim problemem jest prawidłowe umieszczenie przecinka dla ostatniego (lub pierwszego) elementu.

Moja nie działająca wersja, która wyświetla dane wyjściowe (p1, p2, p3,) wygląda następująco:

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}})`

Moja najlepsza wskazówka do tej pory znajduje się tutajhttp://golang.org/pkg/text/template/ w następującym oświadczeniu:

Jeśli akcja „zakres” inicjalizuje zmienną, zmienna jest ustawiana na kolejne elementy iteracji. Ponadto „zakres” może zadeklarować dwie zmienne oddzielone przecinkiem:

$index, $element := pipeline

w takim przypadku $ index i $ element są ustawiane na kolejne wartości odpowiednio tablicy / indeksu tablicy lub klucza i elementu mapy. Zauważ, że jeśli jest tylko jedna zmienna, jest ona przypisana do elementu; jest to przeciwieństwo klauzul zakresu konwencji w Go. gdzie sugeruje się, że indeks

Sugeruje to, że możliwe jest przechwycenie indeksu w iteracji, ale nie mogę pojąć, co należy rozumieć z zakresem deklarującym dwie zmienne i gdzie w szablonie te zmienne mają być zadeklarowane.