이전 Go언어 테스트 이후 1.16.5로 마이너버전이 업데이트 되었다.
하여 기존에 설치된 버전을 업그레이드한다.
$ go version
go version go1.16.3 linux/amd64
최신버전은 https://golang.org/dl/ 에서 확인 가능하다.
확인한 최신버전을 GOLANG_VERSION 변수에 할당한다.
$ GOLANG_VERSION=1.16.5
$ curl -LO https://dl.google.com/go/go${GOLANG_VERSION}.linux-amd64.tar.gz
$ tar -C /usr/local -xzf go${GOLANG_VERSION}.linux-amd64.tar.gz
버전 업그레이드인 경우 이미 설정 되어있을 것이므로, 이 과정은 생략해도 된다.
bash shell 을 사용하는 경우, ~/.zshrc를 ~/.bashrc로 변경하면 된다.
$ echo 'export GOROOT=/usr/local/go' >> ~/.zshrc
$ echo 'export GOPATH=$HOME/go' >> ~/.zshrc
$ echo 'export PATH=$GOPATH/bin:$GOROOT/bin:$PATH' >> ~/.zshrc
$ source ~/.zshrc
Golang은 Python, Nodejs 등 처럼 완전히 자유롭게 원하는 디렉토리에 프로젝트를 만들 수 없다.
환경변수 설정시 GOPATH를 $HOME/go 로 지정했으므로, HOME 경로에 go 디렉토리가 있어야한다.
없다면, 아래와 같은 폴더 구조로 생성해준다.(특히 src 포함한 하위 디렉토리)
이 경로 외에 작업하면? 별도의 파일을 패키지로 작성할 때 쓸 수 없게 된다
.
├── bin
├── pkg
└── src
├── github.com
│ └── aiden
├── golang.org
└── google.golang.org
src 하위 디렉토리는 다운받아온 경로 별 코드 정리 목적으로 디렉토리를 구분한다.
따라서, 내가 작성할 코드는 src/github.com/aiden 경로에서 작성한다.
+추가: 의존성 관리를 위한 방법으로 위에 기술한 Go Path는 1.11 버전 이하에서 사용하던 방식이며, 이후 Go Module의 등장으로 Go Path는 사용하지 않는다. 이에 대해서는 더 자세히 확인 후 새로 포스팅 해야겠다.
$ go version
go version go1.16.5 linux/amd64
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/aiden/.cache/go-build"
GOENV="/home/aiden/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/aiden/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/aiden/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.16.5"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build953170992=/tmp/go-build -gno-record-gcc-switches"