Go에서 로컬 패키지 가져오기: GOPATH와 홈 디렉토리가 차이를 만드는 이유
Go는 상대 패키지를 사용하여 로컬 패키지를 가져오는 편리한 방법을 제공합니다. 경로. 그러나 이 접근 방식은 패키지가 GOPATH 내에 있는 경우 제한이 있습니다.
GOPATH의 역할
GOPATH는 Go가 패키지를 검색할 디렉터리를 지정합니다. 제공된 예에서 프로젝트는 $GOPATH/src/project에 있습니다. 즉, Go에서는 패키지 이름이 디렉터리 구조와 일치할 것으로 예상합니다.
상대 가져오기 제한
상대 가져오기 경로를 사용하면 현재 디렉터리나 하위 디렉터리에 있는 패키지를 참조할 수 있습니다. 이 경우 "models" 패키지는 프로젝트의 "models" 하위 디렉터리에 있습니다.
그러나 go build 또는 go install을 사용하여 패키지를 컴파일하거나 설치할 때 상대 가져오기가 완전히 지원되지 않습니다. 이러한 도구는 패키지 경로가 절대 경로이거나 "Go 코드 작성 방법"에 설명된 표준 구조를 따를 것으로 예상합니다.
홈 디렉터리 예외
프로젝트가 있는 경우 홈 디렉터리(예: ~/project)에서는 상대 가져오기가 예상대로 작동합니다. 이는 홈 디렉터리가 GOPATH의 일부가 아니고 Go가 현재 디렉터리와 하위 디렉터리 내에서 패키지를 검색하기 때문입니다.
해결책
제한 사항을 극복하려면 GOPATH에서 상대적 가져오기를 수행하려면 "Go 코드 작성 방법"에 제공된 지침에 따라 코드를 구성하는 것이 좋습니다. 여기에는 절대 가져오기 경로를 사용하거나 GOPATH 구조에 맞게 패키지를 구성하는 것이 포함됩니다.
위 내용은 상대 가져오기가 내 홈 디렉토리에서는 작동하지만 GOPATH 내부에서는 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!