名前が重複するパッケージのインポート宣言を理解する
同じソース ファイル内で同じ名前を持つ複数のパッケージを利用するには、インポート宣言を理解することが重要です。 「text/template」と「html/template」など、同じ名前のパッケージをインポートする場合、競合する宣言が発生する可能性があります。
次のコードを検討してください。
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}}`) }
このコードは、 「テンプレート」変数の再宣言によりエラーが発生します。この問題を解決するには、エイリアスを使用してパッケージの 1 つの名前を変更します。例:
import ( "text/template" htemplate "html/template" // this is now imported as htemplate )
「html/template」の名前を「htemplate」に変更すると、両方のパッケージに別々にアクセスできます。例:
t_html, err := htemplate.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
このコードは、「htemplate」エイリアスを通じて「html/template」パッケージを使用して新しいテンプレートを作成します。
このトピックの詳細については、公式を参照してください。 Go 言語仕様。
以上がGo で同じ名前を持つ競合するパッケージのインポートを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。