# vscode Golang 사용하기
# vscode-go extension 설치
#
https://marketplace.visualstudio.com/items?itemName=lukehoban.Go# vscode 업데이트 후 동작하지 않으면 go extension 삭제하고 재설치
ctrl + shift + p -> ext install (install extension) -> "Rich Go language support for Visual Studio Code" 설치 -> Restart
# 사용자 설정(default setting 값은 수정할 수 없고, overwrite 된다.)
File -> Preferences -> User Settings
{
"go.buildOnSave": true,
"go.lintOnSave": true,
"go.vetOnSave": true,
"go.buildTags": "",
"go.buildFlags": [],
"go.lintFlags": [],
"go.vetFlags": [],
"go.coverOnSave": false,
"go.useCodeSnippetsOnFunctionSuggest": false,
"go.formatOnSave": true,
// goreturns 은 goimports(자동 임포트), gofmt(자동 포맷팅)를 사용하고 리턴코드도 자동으로 채워준다.
"go.formatTool": "goreturns",
"go.gocodeAutoBuild": false,
// 맥,리눅스 기준
//"go.goroot": "/usr/local/go",
//"go.gopath": "/Users/ysoftman/gopath"
// 윈도우 기준
"go.goroot": "c:\\go",
"go.gopath": "c:\\ysoftman\\Project\\gopath"
}
#####
# delve(디버거) 설치(go v1.5 이상 필요)
#
https://github.com/derekparker/delve/tree/master/Documentation/installation# 맥의 경우
brew install go-delve/delve/delve# 리눅스의 경우
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
cd $GOPATH/src/github.com/derekparker/delve
make install
# 윈도우 mingw-w64
#
http://sourceforge.net/projects/mingw-w64/# mingw-w64 설치시 아래와 같이 선택
Version: Latest available (5.3.0 at time of writing)
Architecture: x86_64
Threads: posix (shouldn't actually matter)
Exception: seh (shouldn't actually matter)
Build revision: Latest available (0 at time of writing)
# 설치경로 C:\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0
# 설치 완료 후 환경 변수 PATH 에 경로 추가
# C:\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin
# dlv 라이브러리 빌드 및 설치
# 참고로 다른 버전의 mingw 가 설치되어 path 로 잡혀 있어 실행되면
# 에러가 발생하니 환경변수 path 에서 제외시키던가 다른버전은 삭제하도록 한다.
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
cd c:\ysoftman\project\gopath\src\github.com\derekparker\delve
set GO15VENDOREXPERIMENT=1
mingw32-make install
# 처음에는 디버거 선택 화면이 나오고 go 선택하면 launch 환경을 편집할 수 있다.
# 설정은 현재 워킹 디렉토리에서 .vscode/launch.json 로 저장된다.
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}",
"env": {},
"args": []
}
]
}
# go 포맷팅(gofmt)
alt + shift + f
# go back
alt + left arrow
# go forward
alt + right arrow
# debugging start
f5
# debugging stop
shift + f5
# debugging step over
f10
# debugging step into
f11
# debugging step out
Shift+F11
# 기타 Command Palette(ctrl + shift + p) 에서 명령어를 찾아 수행
#####
# 필요시 golang 툴 설치
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-find-references
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols