手順が近いか遠いかをどのように識別するのでしょうか?
プロシージャは、呼び出される関数の位置に基づいて、近いか遠いかとして識別されます。関数がそれを呼び出しているコードと同じ Go パッケージ内で定義されている場合、その関数は近いものとみなされます。関数が別の Go パッケージで定義されている場合、その関数は far であるとみなされます。
Near 関数と Far 関数の違いは、defer ステートメントを使用してパニックを処理する場合、または関数の最後でリソースを閉じる場合にのみ重要です。 defer ステートメントが見つかると、Go ランタイムは遅延を処理する関数を格納するスタックに変数をプッシュします。遅延関数が近くにある場合、変数は同じ Go パッケージ内の関数へのポインターを格納します。遅延関数が far の場合、変数には、パッケージ間呼び出しを通じて far 関数を呼び出すスタブ関数へのポインターが格納されます。
パッケージ間の呼び出しはパッケージ内呼び出しよりもコストがかかるため、一般に、可能な場合は近い関数を使用することが推奨されます。これは、一緒に使用する必要がある関数が同じパッケージ内で定義されるように、コードをパッケージに編成することで実現できます。