usar plantillas para descargar bootstrap go go-templates

para - plantillas django



En las plantillas de Go, accediendo al canal principal/global dentro del rango (1)

Usando la variable $ (recomendado)

De la documentación del text/template del paquete:

Cuando comienza la ejecución, $ se establece en el argumento de datos que se pasó a Ejecutar, es decir, al valor inicial del punto.

Como @Sandy señala, por lo tanto, es posible acceder a la Ruta en el ámbito externo usando $.Path .

const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`

Usando una variable personalizada (respuesta antigua)

Encontré una respuesta pocos minutos después de la publicación.
Al usar una variable, se puede pasar un valor al range alcance:

const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`

¿Es posible, dentro de una {{range pipeline}} T1 {{end}} en el paquete de text/template para acceder al valor de las tuberías antes de la acción de rango, o la tubería principal / global aprobada como argumento para Ejecutar?

Ejemplo de trabajo que muestra lo que trato de hacer:

package main import ( "os" "text/template" ) // .Path won''t be accessible, because dot will be changed to the Files element const page = `{{range .Files}}<script src="{{html .Path}}/js/{{html .}}"></script>{{end}}` type scriptFiles struct { Path string Files []string } func main() { t := template.New("page") t = template.Must(t.Parse(page)) t.Execute(os.Stdout, &scriptFiles{"/var/www", []string{"go.js", "lang.js"}}) }

play.golang.org