몇시간 삽질한 끝에 해결한 로컬 패키지 import하기 정리.
[이하 go 1.17버전]
다음과 같이 구성되어있다고 하자.
D:\source\go\bin
D:\source\go\pkg
D:\source\go\src
1. 프로젝트를 저장하기 위해 추가로 폴더를 추가한다.
D:\source\go\src\project
2. main 패키지 & main 함수가 있는 *.go 파일은 다음에 위치하게 된다
D:\source\go\src\project\main.go
3. 로컬 패키지들은 다음에 위치한다.
D:\source\go\src\package1\pack1.go
D:\source\go\src\package2\pack2.go
이젠 터미널에서 다음과 같이 작업한다.
$ D:\source\go\src\package1 go mod init package1 // 패키지 생성
$ D:\source\go\src\package1 go mod tidy // go.mod 내용 추가, go.sum 생성
$ D:\source\go\src\package2 go mod init package2 // 패키지 생성
$ D:\source\go\src\package2 go mod tidy // go.mod 내용 추가, go.sum 생성
$ D:\source\go\src\project go mod init project
$ D:\source\go\src\project go mod tidy
그리곤 D:\source\go\src\project에 생성된 go.mod에서 다음과 같이 수정한다
마지막으로 빌드하면 끝이다.
$ D:\source\go\src\project go build
이렇게 하면 정상적으로 빌드가 됐다.
다른 블로그에선 불필요한 정보가 많아서 예시로만 정리해둔다.
[go 1.18 버전 이후]
workspace 개념이 추가되면서 위와 같이 일일히 정해주는 방법 대신 ROOT에 go.work 파일을 정의해 일괄 정의 할 수 있게 되었다.
한 번 해봤는데 뭘 잘못했는지 내부 패키지들끼리 참조가 안되서 실제 적용은 못해봤다.
https://jeremyko.blogspot.com/2022/03/golang-118-workspace-mode.html
'프로그래밍 > Go' 카테고리의 다른 글
go-sql-driver bad connection (0) | 2022.10.12 |
---|---|
Rest api 라이브러리 찾기 (0) | 2022.09.20 |
vscode에서 내부 패키지 관련 빨간 줄 제거하기 (0) | 2022.09.15 |
사내 스터디 1주차 (0) | 2022.02.23 |