5

Go 仕様のパッケージ初期化部分で、「レキシカル ファイル名の順序」とはどういう意味ですか?

再現可能な初期化動作を確保するために、ビルド システムは、同じパッケージに属する複数のファイルをレキシカル ファイル名順にコンパイラに提示することをお勧めします。

4

1 に答える 1

8

ウィキペディアから:

字句順序は、単語のアルファベット順が構成文字のアルファベット順に基づいている方法の一般化です。

実際には、これはファイル名が文字列として比較され、文字コードを使用して順序が決定されることを意味します。英語のアルファベットの文字コードの順序は文字の自然な順序に従いますが、文字以外がファイル名の一部でもある場合 (たとえば、数字や のような他の文字'-')、文字コードの順序は重要です。

これは、パッケージに複数のソース ファイルが含まれている場合に、ソース ファイルの (任意の) 順序を定義するための規則にすぎません。この順序は、パッケージが再コンパイルされても同じままです (もちろん、ファイルの名前は変更されません)。

これは、ソース ファイルが常に同じ順序で処理されるようにするためです。したがって、パッケージinit()関数も同じ順序で実行され、同じ動作が観察されます。多くの場合、パッケージinit()関数の順序は重要ではありませんが、場合によっては重要になる場合があります。このレキシカル ファイル名の順序規則に従うことで、init()関数の (固定された) 実行順序に依存できます。

于 2015-07-27T10:47:02.070 に答える