ホームページ >バックエンド開発 >Golang >Go で同じ名前を持つ競合するパッケージのインポートを解決するにはどうすればよいですか?

Go で同じ名前を持つ競合するパッケージのインポートを解決するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 15:07:10666ブラウズ

How Can I Resolve Conflicting Package Imports with Identical Names in Go?

名前が重複するパッケージのインポート宣言を理解する

同じソース ファイル内で同じ名前を持つ複数のパッケージを利用するには、インポート宣言を理解することが重要です。 「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。