パッケージのインポートと 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 サイトの他の関連記事を参照してください。