Golang에서 로컬 패키지를 가져오는 방법
James Reed
Infrastructure Engineer · Leapcell

Key Takeaways
go mod init
을 사용하여 Go 모듈을 초기화하여 로컬 패키지를 관리합니다.- 모듈 경로(예:
myproject/mypackage
)를 사용하여 로컬 패키지를 가져옵니다. - 프로젝트의 루트 디렉토리에서 프로젝트를 실행하여 올바른 패키지 해결을 보장합니다.
Golang으로 작업할 때 코드를 여러 패키지로 구성하는 것은 모듈성과 재사용성을 유지하기 위한 일반적인 방법입니다. 그러나 초보자는 로컬 패키지를 올바르게 가져오고 사용하는 데 어려움을 겪는 경우가 많습니다. 이 문서에서는 Golang에서 로컬 패키지를 가져오는 과정을 안내합니다.
Go 모듈 및 GOPATH 이해
로컬 패키지를 가져오기 전에 Go가 종속성을 관리하는 방법을 이해하는 것이 중요합니다. Go는 기존의 GOPATH
방법을 대체한 모듈 시스템(go.mod
)을 사용합니다. 로컬 패키지를 가져오는 방법은 프로젝트가 GOPATH
내부에 있는지 또는 모듈이 활성화된 작업 공간에 있는지에 따라 달라집니다.
로컬 패키지로 Golang 프로젝트 설정
로컬 패키지 가져오기를 시연하기 위해 간단한 Go 프로젝트를 만들어 보겠습니다.
1. 프로젝트 디렉토리 생성
먼저 프로젝트에 대한 새 디렉토리를 만듭니다.
mkdir myproject cd myproject
디렉토리에서 Go 모듈을 초기화합니다.
go mod init myproject
이 명령은 myproject
를 모듈 이름으로 정의하는 go.mod
파일을 만듭니다.
2. 로컬 패키지 생성
프로젝트 디렉토리 내에서 로컬 패키지를 저장할 mypackage
라는 폴더를 만듭니다.
mkdir mypackage
그런 다음 mypackage
내부에 Go 파일을 만듭니다.
touch mypackage/mymodule.go
mypackage/mymodule.go
를 편집하여 간단한 함수를 정의합니다.
package mypackage import "fmt" func Hello() { fmt.Println("Hello from mypackage!") }
3. 로컬 패키지 가져오기
이제 프로젝트의 루트 디렉토리에 main.go
파일을 만듭니다.
touch main.go
main.go
를 편집하여 로컬 패키지를 가져와 사용합니다.
package main import ( "myproject/mypackage" ) func main() { mypackage.Hello() }
4. 코드 실행
이제 프로그램을 실행합니다.
go run main.go
다음을 출력해야 합니다.
Hello from mypackage!
일반적인 문제 해결
1. cannot find module providing package
다음과 같은 오류가 표시되면:
cannot find module providing package myproject/mypackage
다음을 확인하십시오.
- 프로젝트에 올바른 모듈 경로가 있는 유효한
go.mod
파일이 있습니다. - 프로젝트의 루트 디렉토리에서
go run main.go
를 실행하고 있습니다. - 패키지 폴더 및 파일 이름이 가져오기 경로와 일치합니다.
2. go: cannot find main module
Go 버전이 1.17 이상인 경우 모듈 작업 공간 내부에 있는지 확인하십시오.
go mod tidy
이 명령은 종속성을 해결하는 데 도움이 됩니다.
결론
모듈 시스템을 이해하면 Golang에서 로컬 패키지를 가져오는 것이 간단합니다. 코드를 별도의 패키지로 구성하면 재사용성과 유지 관리성을 향상시킬 수 있습니다. 항상 모듈 경로가 올바른지 확인하고 Go 프로젝트를 올바르게 초기화하십시오.
FAQs
go.mod
파일이 올바르게 초기화되었고 가져오기 경로가 모듈 구조와 일치하는지 확인하십시오.
아니요, Go 모듈(go.mod
)을 사용하면 GOPATH
가 더 이상 필요하지 않습니다.
go mod tidy
를 실행하여 모듈 종속성을 정리하고 해결합니다.
Go 프로젝트 호스팅을 위한 최고의 선택, Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 지불합니다. 요청이나 요금이 없습니다.
타의 추종을 불허하는 비용 효율성
- 유휴 요금 없이 사용한 만큼만 지불합니다.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
간편한 확장성 및 고성능
- 쉬운 동시성 처리를 위한 자동 확장.
- 운영 오버헤드가 전혀 없이 구축에만 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 팔로우하세요: @LeapcellHQ