ホームページ > バックエンド開発 > Golang > パッケージ接頭辞を使用せずに Go でパッケージ関数を呼び出すにはどうすればよいですか?

パッケージ接頭辞を使用せずに Go でパッケージ関数を呼び出すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-02 03:02:30
オリジナル
589 人が閲覧しました

How can I call a package function in Go without using the package prefix?

パッケージ接頭辞なしでパッケージ関数を呼び出す

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート