※ 디스커버리 Go 언어 라는 책 내용을 전반적으로 다루지만 책 리뷰보다는 좀 더 간단하게 정리해보겠습니다.
2. 환경 설정하기
2.1 설치하기
맥에서 homebrew 를 통해 golang 을 설치해보도록 하겠습니다.
먼저 터미널에서 brew install golang 을 입력합니다.
> brew install golang
설치는 금방 완료됩니다. 이후 터미널에서 go version / go / go env 등의 명령어를 입력했을때 아래처럼 잘 나오면 설치는 성공입니다.
> go version
go version go1.14.6 darwin/amd64
이제 GOROOT / GOPATH / PATH 설정을 확인하고, 필요하면 추가해보겠습니다.
- GOROOT : Go 를 설치했을 때 Go 관련된 실행파일, SDK 등이 위치하는 곳
- GOPATH : bin, pkg, src 폴더가 위치하는데 go get 명령어를 통해 받은 패키지나 라이브러리, 소스파일이 위치하는 곳
커맨드 창에 go env 를 입력해봅니다.
> go env
GOPATH="$HOME/go"
GOROOT="/usr/local/Cellar/go/1.14.6/libexec"
GOPATH 의 경우 앞으로 작업할 파일들이 위치하게 되는데, default 로 잡힌 저 위치를 그대로 사용하도록 하겠습니다.
다만 GOROOT 의 경우 go 의 버전을 변경하면 바꿔줘야 할 필요가 있을듯해서 수정과 함께 PATH 환경변수도 수정을 해보겠습니다.
> vi ~/.zshrc
export GOPATH=$HOME/go
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"
> source ~/.zshrc
zshrc 파일을 열어 GOROOT, PATH 라인을 추가해서 저장한 후 source ~/.zshrc 를 실행해 줍니다.
2.2 작업 공간 설정하기
git 은 이미 설치가 되어있다는 전제입니다.
default 로 설정된 GOPATH 를 그대로 사용하기로 했기때문에, 해당 위치에 작업 디렉토리를 만들도록 하겠습니다.
> mkdir -p ~/go
> cd ~/go
위에서 얘기한것처럼 이 작업공간에는 bin, pkg, src 폴더가 위치하게 될 것입니다. go get 명령어를 통해 주로 사용할 명령 도구들을 설치해보겠습니다.
> go get golang.org/x/tools/cmd/...
> go get golang.org/x/tools/cmd/goimports (goimports 도구 하나만 설치할 시)
위 명령어를 터미널에서 실행시 ~/go 위치에 bin, pkg, src 폴더가 생성된 것을 확인할 수 있습니다. 설치된 명령 도구들은 bin 폴더 아래에 들어가있는데, 아까 $HOME/go 로 잡힌 GOPATH 를 PATH 폴더에 추가했었기에 PATH 를 따로 수정할 필요없이 아래의 명령어로 명령 도구들을 확인 가능합니다.
> goimports --help
그럼 이제 예제 코드를 작성해보겠습니다. 현재 위치에서 바로 go 파일을 작성하는 것이 아닌, 아래와 같은 폴더를 만들어서 사용합니다.
> mkdir -p $GOPATH/src/github.com/{usernmae}/sample
> cd $GOPATH/src/github.com/{username}/sample
위와같은 형태로 구조를 잡으면 이후 오픈소스로 공개했을 때 다른 프로그래머들이 go get 명령어로 소스를 쉽게 받아갈 수 있다고 합니다.
> vi sample.go
package main
import "fmt"
func Move(n, from, to, via int) {
if n <= 0 {
return
}
Move(n-1, from, via, to)
fmt.Println(fmt, "->", to)
Move(n-1, via, to, from)
}
func Sample(n int) {
fmt.Println("Number of disks: ", n)
Move(n, 1, 2, 3)
}
func main() {
Sample(3)
}
이후 아까 설치했던 명령 도구들을 간단히 활용해보고, 실행해보겠습니다.
> gofmt -w sample.go // 작성한 파일에서 형식이 잘못된 부분을 고쳐서 다시 작성해 줌
> goimports -w sample.go // 자동으로 import 경로를 추론해 소스 코드 상단에 추가해 줌
> go run sample.go // go파일 실행
위처럼 작성한 sample 폴더 자체가 하나의 패키지가 될 수 있습니다. 이후 다른 파일에서 해당 패키지를 import 해서 사용하고자 한다면 아래와 같습니다.
import "github.com/{username}/sample"
이후 이 패키지 안에 대문자로 시작하는 함수는 sample.Move 와 같이 접근이 가능합니다. 만약 sample.go 의 코드에 Move 를 move 로 고친다면 다른 패키지에서 이 함수를 사용할 수 없을 것입니다.
2.3 편집기 설정하기
에디터로 VSCode 를 사용하는데, Go 플러그인만 설치하면 무리없이 사용할 수 있습니다.
2.4 도구 사용하기
몇 가지 유용한 도구들의 사용법을 소개해보도록 하겠습니다.
- godoc : go 프로그램의 문서를 볼 수 있는 도구
> go doc fmt (fmt 에 관한 문서를 터미널에서 볼 수 있음)
> godoc -http=:6060 (명령어 실행 후 브라우저에서 localhost:6060 으로 들어가면 여러 라이브러리들의 문서를 볼 수 있다)
- Oracle : 소스코드에 여러가지를 물어볼 수 있는 도구, 하지만 명령어를 통해 직접 이용하긴 어려우니 에디터와 연동하여 쓰는것을 권장합니다.
- Vet : 소스코드를 검사하기 위한 도구
> go tool vet github.com/{username}/sample
> go tool vet *.go
위처럼 패키지 경로나 파일 단위로 검사할 수 있습니다.
- Fix : 변경된 옛 API 호출 등을 자동으로 고쳐주는 도구, Go 버전 업그레이드 시 유용
> go tool fix github.com/{username}/sample
- Test : 테스트를 수행하는 도구, 테스트 작성은 다음 시간에 다루도록 하겠습니다.
> go test github.com/{username}/sample
2.5 Summary
- Go 설치 및 디렉토리 구성, 패키지별로 나누는 법 숙지
- go get 을 사용하면 오픈 소스로 공개되어 있는 패키지 쉽게 이용 가능
- godoc 을 사용하면 주석을 문서화할 수 있고 다른 패키지 문서도 볼 수 있음
- 에디터에는 gofmt 를 설정하여 자동으로 형식을 맞추는 것 권장
- goimport 설정해 import 도 자동으로 할 수 있게 설정하여 생산성 향상 권장
출처 : https://book.naver.com/bookdb/book_detail.nhn?bid=10337667
'Backend > Golang' 카테고리의 다른 글
Go 언어 - [6장] (웹 어플리케이션 작성) (0) | 2020.08.29 |
---|---|
Go 언어 - [5장] (구조체) (0) | 2020.08.22 |
Go 언어 - [4장] (함수) (0) | 2020.08.16 |
Go 언어 - [3장] (문자열 및 자료구조) (0) | 2020.08.04 |
Go 언어 - [1장] (Go 언어 소개) (0) | 2020.07.20 |