ホームページ >バックエンド開発 >Golang >「パッケージレベルのエクスポート」とは何を意味しますか?

「パッケージレベルのエクスポート」とは何を意味しますか?

PHPz
PHPz転載
2024-02-05 22:15:081119ブラウズ

「パッケージレベルのエクスポート」とは何を意味しますか?

質問内容

このロガーを開発中です。このインポートは具体的に何を意味するのでしょうか?

リーリー リーリー

例からわかるように、「組み込み」ログは上記の実装によって置き換えられています。公式/正式な仕様が見つかりません。おそらく、この関数がどのように呼び出されるのかわかりません。


正解


これは、関数がパッケージ レベルで直接エクスポートされるという事実への単なる参照です。つまり、これらのエクスポートされたシンボルにアクセスするために、型や変数の参照は必要ありません。

..うーん。この例の例は withfields() 関数です。

これは「パッケージ レベル」でエクスポートされるため、関数を参照するために必要なのはパッケージ名 (またはエイリアス) だけです。

この場合、logrus パッケージには log というエイリアスが付けられているため、エクスポートする withfields() 関数は単純に呼び出すことができます。

リーリー

対照的に、この例の info() 関数は、logrus パッケージ内の別の型によってエクスポートされたシンボル (この場合は関数) を示しています。ここでの () 関数は、logrus.entry 参照 (withfields() 関数によって返される) で呼び出されます。

何が大事なの?

パッケージ レベルのエクスポートは

go では一般的です。何もエクスポートしないパッケージは誰にとってもあまり役に立ちません。 :)

これらが「パッケージレベル」のエクスポートとして明示的に参照されているかどうかはわかりませんが、通常は単なる「エクスポート」または「エクスポート シンボル」などです。

これらは、パッケージ作成者が golang の標準

log パッケージと「互換性のある」パッケージを作成するためにこれを使用するため、特に logrus の場合に呼び出されます (「パッケージ」も使用します)。 -レベル「エクスポート」)。 p> つまり、

logruslog にエイリアスすると、logrus は標準の log パッケージの superset を提供します。これは意図的なものです。これにより、log パッケージを使用する既存のコードは、log 呼び出しを行うファイル内の import ステートメントを変更するだけで、非常に迅速に logrus に変換できます。

以上が「パッケージレベルのエクスポート」とは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。