>  기사  >  백엔드 개발  >  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"를 사용하여:

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.