Por ejemplo, quiero usar tanto text / template como html / template en un archivo fuente. Pero el siguiente código arroja errores.
import (
"fmt"
"net/http"
"text/template" // template redeclared as imported package name
"html/template" // template redeclared as imported package name
)
func handler_html(w http.ResponseWriter, r *http.Request) {
t_html, err := html.template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
t_text, err := text.template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
}
require
y lasimport
declaraciones, mucho mejor que cualquier otro idioma que haya vistoLa respuesta de Mostafa es correcta, sin embargo, requiere alguna explicación. Déjame intentar responderlo.
Su código de ejemplo no funciona porque está intentando importar dos paquetes con el mismo nombre, que es: "plantilla".
Importar es una declaración de declaración:
No puede declarar el mismo nombre ( terminología: identificador ) en el mismo ámbito.
En Go,
import
hay una declaración y su alcance es el archivo que está tratando de importar esos paquetes.No funciona debido a la misma razón por la que no puede declarar variables con el mismo nombre en el mismo bloque.
El siguiente código funciona:
El código anterior proporciona dos nombres diferentes a los paquetes importados con el mismo nombre. Por lo tanto, ahora hay dos identificadores diferentes que puede usar:
t
para eltext/template
paquete yh
para elhtml/template
paquete.Puedes consultarlo en el parque infantil .
fuente