パッケージ接頭辞なしでパッケージ関数を呼び出す
Go では、パッケージをインポートすると、エクスポートされた識別子がインポートするパッケージのスコープに効果的にコピーされます。ただし、パッケージ名をプレフィックスとして使用せずにパッケージ関数にアクセスしたい場合があります。この質問では、これを達成するためのさまざまな方法を検討します。
1 つのアプローチは、「ドット インポート」テクニックです。 Go 仕様では、パッケージ名なしでピリオド (.) を使用すると、そのパッケージからエクスポートされたすべての識別子が現在のパッケージのファイル スコープにインポートされると記載されています。これにより、プレフィックスなしでインポートされた関数に直接アクセスできるようになります。
<code class="go">package main import . "fmt" // import all exported identifiers from "fmt" func main() { Println("hey there") }</code>
ただし、識別子のソースがわかりにくくなりコードが読みにくくなる可能性があるため、この手法は Go コミュニティでは推奨されていません。
あるいは、目的の関数を参照するパッケージレベルの変数を宣言することもできます。このアプローチには、パッケージのインポートと、関数への参照を保持する変数の宣言が含まれます。
<code class="go">package main import ( "fmt" ) var Println = fmt.Println // declare a package-level variable referencing fmt.Println func main() { Println("Hello, playground") }</code>
最後に、型のエイリアスを使用して、インポートされたパッケージで宣言された型を参照できます。
<code class="go">package main import ( "fmt" ) type ScanState = fmt.ScanState // type alias fmt.ScanState func main() { // use ScanState as a type without the "fmt." prefix }</code>
これらのメソッドは、関数を呼び出すときにパッケージ名にプレフィックスを付けないようにする方法を提供しますが、Go コミュニティでは一般的に明示的な名前付けとドット インポートの回避を奨励していることに注意することが重要です。
以上がパッケージ接頭辞を使用せずに Go でパッケージ関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。