ホームページ  >  記事  >  バックエンド開発  >  Go ソース ファイルと同じディレクトリ内のファイルにどのようにアクセスしますか?

Go ソース ファイルと同じディレクトリ内のファイルにどのようにアクセスしますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 08:56:02105ブラウズ

How Do You Access Files in the Same Directory as Your Go Source File?

Go でソース ファイル ディレクトリ内のファイルにアクセスする

Go プログラムを作成する場合、ソース ファイルと同じディレクトリにあるファイルにアクセスすると、挑戦的であること。ソース ファイルが実行中のバイナリと共存するインタープリタ型言語とは異なり、コンパイル済み Go プログラムでは、実行中にソース ファイルが存在する必要はありません。

デフォルト ファイル パス ルックアップ

デフォルトでは、os.Open() のような関数は、次の環境変数で定義された現在の作業ディレクトリ (PWD) 内のファイルを検索します。

$PWD: /dir

「myfile. txt" using:

<code class="go">os.Open("myfile.txt")</code>

Go は、現在の作業ディレクトリ "/dir" で "myfile.txt" を検索します。

組み込みのディレクトリ再配置の欠如

Go には、ソース ファイルと同じディレクトリ内のファイルを自動的に見つける組み込みメカニズムがありません。 Ruby の FILE に相当するものは Go には存在しません。

ただし、 runtime.Caller 関数はコンパイル時にファイル名へのアクセスを提供します:

<code class="go">filepath := runtime.Caller(0)</code>

代替アプローチ

自動ファイル パス検出に依存する代わりに、代替アプローチを検討してください:

  • ファイル パスを明示的に渡す: 絶対パスを指定します。ファイルへのパスを指定するか、引数として渡します。
  • カスタム関数を使用する: ソース ファイル パスを取得し、目的のディレクトリに対応するファイル パスを構築するカスタム関数を作成します。
  • 「__FILE__」定数を再定義します: Go はネイティブに「__FILE__」を定義しませんが、ソース ファイルの場所を指す定数を定義できます:
<code class="go">import "path/filepath"

const __FILE__ = filepath.Join(filepath.Dir(runtime.Caller(0)), "src.go")</code>

以上がGo ソース ファイルと同じディレクトリ内のファイルにどのようにアクセスしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。