Tratamiento de casos especiales para el último elemento de un rango en las plantillas de texto de Google Go
Estoy tratando de escribir una cadena como esta con el sistema de plantillas de go: (p1, p2, p3), donde p1, p2, ... proviene de una matriz en el programa. Mi problema es cómo colocar la coma correctamente para el último (o el primer elemento).
Mi versión que no funciona y que da salida (p1, p2, p3,) se ve así:
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}})`
Mi mejor pista hasta ahora se encuentra aquí.http://golang.org/pkg/text/template/ En la siguiente declaración:
Si una acción de "rango" inicializa una variable, la variable se establece en los elementos sucesivos de la iteración. Además, un "rango" puede declarar dos variables, separadas por una coma:
$index, $element := pipeline
en cuyo caso, $ index y $ element se configuran en los valores sucesivos del índice de matriz / segmento o la clave y el elemento del mapa, respectivamente. Tenga en cuenta que si solo hay una variable, se le asigna el elemento; esto es opuesto a la convención en las cláusulas de rango Go. donde se sugiere que el índice
Esto sugiere que es posible obtener el índice en la iteración, pero simplemente no puedo entender lo que significa el rango que declara dos variables y dónde se supone que se declararán esas variables en la plantilla.