Sebagai contoh, saya ingin menggunakan teks / templat dan html / templat dalam satu file sumber. Namun kode di bawah ini membuang kesalahan.
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
danimport
pernyataan, jauh lebih baik daripada bahasa lain yang pernah saya lihatJawaban 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".
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:
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
untuktext/template
paket, danh
untukhtml/template
paket.Anda bisa memeriksanya di taman bermain .
sumber