ホームページ  >  記事  >  バックエンド開発  >  Go パッケージのインポートで名前の衝突を回避するには?

Go パッケージのインポートで名前の衝突を回避するには?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 09:28:02221ブラウズ

How to Avoid Name Collisions in Go Package Imports?

パッケージのインポートと Go の名前の衝突を克服する

Go では、コードを整理して再利用するためにパッケージを利用するのが一般的ですが、場合によっては、異なるパッケージ間で関数名の衝突が発生する可能性があります。これにより、パッケージ名を指定せずに関数を呼び出すことができなくなる可能性があります。

質問で示されている例は、fmt パッケージをインポートし、fmt を明示的に指定せずにその Println 関数を呼び出すシナリオを示しています。

Go には C# の静的インポートと直接同等の機能はありませんが、実行可能な代替手段が 2 つあります。

1.ドットインポート

仕様では、インポート中に明示的なピリオド (.) を使用して、そのパッケージからエクスポートされたすべての識別子を修飾子なしで利用できるようにすることが許可されています。

例:

package main

import (
    . "fmt"
)

func main() {
    Println("Hello, playground")
}

2.パッケージ レベルの変数または型エイリアス

もう 1 つの方法は、必要な関数を参照するパッケージ レベルの変数を作成することです。

例:

package main

import (
    "fmt"
)

var Println = fmt.Println
type ScanState = fmt.ScanState // type alias

func main() {
    Println("Hello, playground")
}

注意:

ドット インポートは解決策を提供しますが、コードの可読性の問題が発生する可能性があるため、Go コミュニティ内では推奨されていません。より明確にするため、パッケージ レベルの変数または型エイリアスを使用することをお勧めします。

以上がGo パッケージのインポートで名前の衝突を回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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