C の `using some_namespace::object` ディレクティブに相当する Go はありますか?

Susan Sarandon
リリース: 2024-11-01 05:37:02
オリジナル
625 人が閲覧しました

Is there a Go equivalent to C  's `using some_namespace::object` directive?

Go C の using ディレクティブと同等

C では、 using ディレクティブを使用すると、名前空間名を接頭辞として付けることなく、名前空間から特定の要素をインポートできます。 。たとえば、 std::cout を使用すると、 std::cout の代わりに cout を直接使用できます。

質問: C で some_namespace::object を使用するのと同等のものはありますか? Go?

答え:

Go は、 C の using ディレクティブとまったく同等のものを提供しません。ただし、同様の効果を達成できるアプローチがいくつかあります。

1.名前空間全体のインポート:

を使用して名前空間全体をインポートできます。構文:

<code class="go">import . "common"</code>
ログイン後にコピー

これにより、共通名前空間からすべての識別子がインポートされ、名前空間プレフィックスなしで識別子を使用できるようになります。ただし、名前空間から特定の要素をいくつかだけ必要とする場合には、このアプローチは望ましくない可能性があります。

2.エイリアスの使用:

type キーワードを使用して特定の識別子のエイリアスを作成できます:

<code class="go">import "fmt"

type Sprintf = fmt.Sprintf</code>
ログイン後にコピー

これにより、fmt.Sprintf の代わりに Sprintf を直接使用できるようになります。ただし、この方法では、使用する識別子ごとにエイリアスを明示的に定義する必要があります。

3.事前定義された識別子の使用:

一般的に使用されるいくつかの識別子について、Go は、対応するパッケージをインポートせずに使用できる事前定義された識別子を提供します。たとえば、len は、「builtin」パッケージ内の len 関数の事前定義された識別子です。

例:

次の Go コードは、上で説明したさまざまなアプローチを示しています。

<code class="go">import (
    "fmt"
)

type Sprintf = fmt.Sprintf

func main() {
    fmt.Println(fmt.Sprintf("Hello, world!"))
    fmt.Println(Sprintf("Hello, world!"))
}</code>
ログイン後にコピー

この例では、事前定義された fmt 識別子と Sprintf エイリアスを使用して、fmt.Sprintf 関数呼び出しを置き換えます。

以上がC の `using some_namespace::object` ディレクティブに相当する Go はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!