>백엔드 개발 >Golang >로컬이 아닌 Go 패키지를 가져올 때 '로컬 가져오기'가 실패하는 이유는 무엇입니까?

로컬이 아닌 Go 패키지를 가져올 때 '로컬 가져오기'가 실패하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-15 10:35:10587검색

Why Does

비로컬 패키지의 로컬 가져오기: 오류 이해

Go에서는 로컬 가져오기를 사용하여 동일한 디렉터리 또는 하위 디렉터리에서 패키지를 가져옵니다. 현재 작업 디렉토리. 그러나 "local import "./greeting" in non-local package" 오류에서 알 수 있듯이, 비로컬 패키지를 가져올 때는 이 기술을 적용할 수 없습니다.

오류 원인

오류를 이해하기 위해 제공된 파일 구조를 살펴보겠습니다.

/Users/clarkj84/Desktop/LearningGo
└── src
    └── jacob.uk.com
        ├── greeting
        │   └── greeting.go
        └── helloworld.go

go install을 실행하려고 할 때 문제가 발생합니다. src 디렉토리 내에서 jacob.uk.com. 이 명령은 helloworld.go에 ./greeting 가져오기가 포함된 jacob.uk.com 패키지를 설치하려고 시도합니다. 그러나 패키지 자체는 src 내에 있지 않지만 src 디렉터리에서 실행되므로 Go에서는 이를 로컬 가져오기로 해석합니다.

해결 방법

오류를 해결하려면 두 가지 옵션을 사용할 수 있습니다. :

  1. 작업 디렉토리 변경: src/jacob.uk.com 디렉토리에서 패키지를 지정하지 않고 go install을 실행합니다. 이를 통해 Go는 가져오기를 로컬 가져오기로 올바르게 해결할 수 있습니다.
  2. 절대 가져오기 경로 사용: 로컬 가져오기를 절대 가져오기 경로로 교체:
import "jacob.uk.com/greeting"

이 접근 방식을 사용하면 작업 디렉터리에 관계없이 패키지를 가져와 사용할 수 있습니다.

Absolute의 장점 가져오기

절대 가져오기는 로컬 가져오기에 비해 여러 가지 장점을 제공합니다.

  • 명확성: 가져온 패키지의 위치를 ​​명시적으로 지정하므로 이해하고 유지 관리하기가 더 쉽습니다.
  • 이식성: 절대 가져오기를 통해 코드를 컴파일하고 실행할 수 있습니다. 가져오기 경로를 변경할 필요 없이 어느 위치에서나 가능합니다.
  • Go 모듈 호환성: 최신 Go 개발은 기본적으로 절대 가져오기 경로를 활용하는 Go 모듈을 사용합니다.

위 내용은 로컬이 아닌 Go 패키지를 가져올 때 '로컬 가져오기'가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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