Trả lời bởi Mostafa là chính xác, tuy nhiên nó đòi hỏi một số lời giải thích. Hãy để tôi cố gắng trả lời nó.
Mã ví dụ của bạn không hoạt động vì bạn đang cố nhập hai gói có cùng tên, đó là: "mẫu".
import "html/template" // imports the package as `template`
import "text/template" // imports the package as `template` (again)
Nhập khẩu là một tuyên bố khai báo:
Bạn không thể khai báo cùng tên ( thuật ngữ: định danh ) trong cùng phạm vi.
Trong Go, import
là một khai báo và phạm vi của nó là tệp đang cố gắng nhập các gói đó.
Nó không hoạt động vì cùng một lý do mà bạn không thể khai báo các biến có cùng tên trong cùng một khối.
Các mã sau hoạt động:
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}}`)
}
Mã ở trên cung cấp hai tên khác nhau cho các gói nhập khẩu có cùng tên. Vì vậy, hiện có hai định danh khác nhau mà bạn có thể sử dụng: t
cho text/template
gói và h
cho html/template
gói.
Bạn có thể kiểm tra nó trên sân chơi .
require
và cácimport
tuyên bố, tốt hơn nhiều so với bất kỳ ngôn ngữ nào tôi đã thấy