Estoy tratando de escribir una cadena como esta usando 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 elemento (o el primero).Tratamiento de casos especiales para el último elemento de un rango en las plantillas de texto de Google Go
Mi versión no de trabajo que da salida (P1, P2, P3,) tiene el siguiente aspecto:
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 el momento se encuentran aquí http://golang.org/pkg/text/template/ en la siguiente afirmación:
Si una La acción "rango" inicializa una variable, la variable se establece en los elementos sucesivos de la iteración. Además, un "intervalo" puede declarar dos variables, separados por una coma:
$index, $element := pipeline
en el que caso índice de $ y $ elemento se establecen en los valores sucesivos de la índice de matriz/rebanada o mapa de claves y el elemento , 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 Go range. donde se sugiere que el índice
Esto sugiere que es posible de hacerse con el índice en la iteración, pero simplemente no puede averiguar lo que se quiere decir con la gama de declarar dos variables y donde en la plantilla de esas variables se supone que deben ser declarados.
Gracias. ¡Eso lo resolvió! – Laserallan