Jawaban oleh Mostafa benar, namun menuntut beberapa penjelasan. Biarkan saya mencoba menjawabnya.
Contoh kode Anda tidak berfungsi karena Anda mencoba mengimpor dua paket dengan nama yang sama, yaitu: "template".
import "html/template" // imports the package as `template`
import "text/template" // imports the package as `template` (again)
Mengimpor adalah pernyataan deklarasi:
Anda tidak dapat mendeklarasikan nama yang sama ( terminologi: pengidentifikasi ) dalam cakupan yang sama.
In Go, import
adalah deklarasi dan cakupannya adalah file yang mencoba mengimpor paket-paket itu.
Itu tidak berfungsi karena alasan yang sama bahwa Anda tidak dapat mendeklarasikan variabel dengan nama yang sama di blok yang sama.
Kode berikut berfungsi:
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}}`)
}
Kode di atas memberikan dua nama berbeda untuk paket yang diimpor dengan nama yang sama. Jadi, sekarang ada dua pengidentifikasi berbeda yang dapat Anda gunakan: t
untuk text/template
paket, dan h
untuk html/template
paket.
Anda bisa memeriksanya di taman bermain .
require
danimport
pernyataan, jauh lebih baik daripada bahasa lain yang pernah saya lihat