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.