Por exemplo, eu quero usar texto / modelo e html / modelo em um arquivo de origem. Mas o código abaixo gera erros.
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
eimport
declarações, apenas muito melhor do que quaisquer outras línguas que eu já viA resposta de Mostafa está correta, porém exige alguma explicação. Deixe-me tentar responder.
Seu código de exemplo não funciona porque você está tentando importar dois pacotes com o mesmo nome, que é: "template".
Importar é uma declaração de declaração:
Você não pode declarar o mesmo nome ( terminologia: identificador ) no mesmo escopo.
No Go,
import
é uma declaração e seu escopo é o arquivo que está tentando importar esses pacotes.Não funciona pelo mesmo motivo que você não pode declarar variáveis com o mesmo nome no mesmo bloco.
O código a seguir funciona:
O código acima fornece dois nomes diferentes para os pacotes importados com o mesmo nome. Portanto, agora existem dois identificadores diferentes que você pode usar:
t
para otext/template
pacote eh
para ohtml/template
pacote.Você pode verificá-lo no parquinho .
fonte