요약
go mod init
을 이용해 프로젝트 루트 경로에 go.mod
파일 생성하면 됩니다.
커멘드
1 2 3 4 5 6 7 8 9 10 11
| go mod init {package name}
go build
go tidy
go mod verify
|
mod 파일 생성
1 2
| go mod init <your-module-name>
|
go.mod
파일은 루트 경로에 하나만 존재하면 됩니다.
프로젝트 내 디렉토리별로 go.mod
를 만들 필요가 전혀 없습니다.
샘플
mod 생성
1 2
| go mod init go-simple-func
|
main.go
1 2 3 4 5 6 7 8 9 10 11
| package main
import ( "go-simple-func/color" )
func main() { for _, e := range color.Colors() { println(e) } }
|
color/color.go
1 2 3 4 5
| package color
func Colors() []string { return []string{"red", "blue"} }
|
run
외부 공개 모듈
아래 형태의 패키지 import 는 동일 프로젝트 단위에서는 유효할수 있으나 다른 프로젝트에서 사용하기는 어렵습니다.
1 2 3
| import ( "go-simple-func/color" )
|
따라서 공유 가능한 위치에 패키지를 올리고 해당 주소를 지정하게 된다면 어떤 go 프로젝트든지 쉽게 참조가 가능합니다.
예시
1 2 3
| import ( "github.com/labstack/echo" )
|
참고
go 1.13 (2020.01 현재 최신) 버전에서 보면 기본적으로 mod 를 이용한 패키지 모듈관리를 권장하고 있으므로 다른 패키지 관리자를 찾는 시간낭비를 하지 않아도 될것같습니다.
오류 사례 및 대응
import 410 Gone
해결
1 2
| $ export GOSUMDB=off $ go get -u
|
오류 메시지
1 2 3 4 5 6 7 8
| $ go mod tidy go: finding module for package my.domain.com/proto go: found my.domain.com/proto in my.domain.com/proto v0.0.0-20200403070107-7aa1a88d0c5c go: my.domain.com/pj imports my.domain.com/proto: my.domain.com/proto@v0.0.0-20200403070107-7aa1a88d0c5c/go.mod: verifying module: my.domain.com/proto@v0.0.0-20200403070107-7aa1a88d0c5c/go.mod: reading https://sum.gol ang.org/lookup/my.domain.com/proto@v0.0.0-20200403070107-7aa1a88d0c5c: 410 Gone server response: not found: my.domain.com/proto@v0.0.0-20200403070107-7aa1a88d0c5c: unrecognized import path "my.domain.com/proto": https fetch: Get "https://my.domain.com/proto?go-get=1": dial tcp 222.122.86.35:443: connect: connection refused
|