https://velog.io/@taesunny/Go-Module-정리-golang-wiki-정리
Go에서의 Module은 Go package들의 의존성을 관리하는 Go 패키지 관리 시스템이다.
기존에 GO 개발 시, GOROOT 외부에서 GOPATH를 설정하여 개발하였던 방식의 불편함이 사라졌다. GOPATH를 사용하지 않아 동시에 여러 Go 프로젝트 개발이 편리해 졌다.
go 1.11 이상의 go 버전 설치가 필요하다. GOPATH 외부의 디렉터리를 이용할 경우 환경 변수 설정은 불필요하지만, 만약 GOPATH 내부의 디렉터리를 사용할 경우 아래와 같이 ‘GO111MODULE’ 환경 변수를 설정한다.
export GO111MODULE=on // available values 'on', 'off', 'auto'
‘GO111MODULE=auto’로 설정할 경우 go.mod 파일이 존재 하면 go module로 자동으로 인식되고, go 1.13 버전 이상부터는 ‘GO111MODULE=on’으로 설정하여 명시적으로 go module을 사용할 수 있다.
GOPATH 경로가 아닌 곳에 go module을 위한 디렉터리를 생성한다.
$ mkdir -p /tmp/sunny/repo
$ cd /tmp/sunny/repo
$ git init -q
$ git remote add origin <https://github.com/sunny/repo>
go mod init 명령을 이용해서 모듈을 초기화 한다.
$ go mod init github.com/sunny/repo
go: creating new go.mod: module github.com/sunny/repo
$ cat <<EOF > hello.go
package main
import (
"fmt"
"rsc.io/quote"
)
func main() {
fmt.Println(quote.Hello())
}
EOF
$ go build -o hello
$ ./hello
Hello, world.