A 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".
import "html/template" // imports the package as `template`
import "text/template" // imports the package as `template` (again)
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:
package main
import (
t "text/template"
h "html/template"
)
func main() {
t.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
h.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
}
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 o text/template
pacote e h
para o html/template
pacote.
Você pode verificá-lo no parquinho .
require
eimport
declarações, apenas muito melhor do que quaisquer outras línguas que eu já vi