Відповідь Мостафи є правильною, проте вимагає певного пояснення. Дозвольте спробувати відповісти на це.
Ваш приклад код не працює, тому що ви намагаєтеся імпортувати два пакунки з однаковою назвою, а саме: "шаблон".
import "html/template" // imports the package as `template`
import "text/template" // imports the package as `template` (again)
Імпорт - це заява декларації:
Ви не можете оголосити одне і те ж ім’я ( термінологія: ідентифікатор ) в тій же області.
У Go import
- це декларація, а її обсяг - це файл, який намагається імпортувати ці пакунки.
Це не працює з тієї ж причини, що ви не можете оголосити змінні з тим самим іменем в одному блоці.
Наступний код працює:
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}}`)
}
Код, наведений вище, імпортує пакети з тим самим іменем два різних імені. Отже, зараз ви можете використовувати два різних ідентифікатори: і t
для text/template
пакета, і h
для html/template
пакета.
Ви можете перевірити це на дитячому майданчику .
require
таimport
твердженнями, просто набагато краще, ніж будь-які інші мови, які я бачив