CafeM0ca

[Go] Go 프로젝트 개발 환경 구축 본문

Programming/Go

[Go] Go 프로젝트 개발 환경 구축

M0ca 2021. 1. 24. 22:01
반응형

개발을 시작하기 위해 개발 환경 셋팅에 진심을 다하는 우리..

텍스트를 입력하기 위해 vim을 설치하고
vim을 더 우아하게 사용하기 위해 vim-plug를 설치하고
'이게 있으면 더 좋겠다~' 하면서 코드는 뒷전이고 괜찮은 플러그인 찾는데 시간을 보내는 것 처럼
개발자들은 일하기 위해 일을 위한 일을 한다.

Go언어 프로젝트 초기 셋팅에 대해 알아보자.

vim 셋팅

에디터인 vim부터 건들자.

github.com/junegunn/vim-plug

 

junegunn/vim-plug

:hibiscus: Minimalist Vim Plugin Manager. Contribute to junegunn/vim-plug development by creating an account on GitHub.

github.com

vim-plug을 설치해주자. 위 github를 통해 환경에 맞는 스크립트를 터미널에서 실행한다.

 

자동완성을 위해 YouCompleteMe를 추가해준다.

github.com/ycm-core/YouCompleteMe

 

ycm-core/YouCompleteMe

A code-completion engine for Vim. Contribute to ycm-core/YouCompleteMe development by creating an account on GitHub.

github.com

vim-go도 추가해주자. github.com/fatih/vim-go

 

fatih/vim-go

Go development plugin for Vim. Contribute to fatih/vim-go development by creating an account on GitHub.

github.com

 

본인이 vim을 쓴다면 ~/.vimrc

본인이 nvim을 쓴다면 ~/.config/nvim/init.vim

각 사용하는 vim에 맞춰 아래 스크립트를 추가해주자

call plug#begin('~/.vim/plugged')
 
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable'  }
 
call plug#end()

"nnoremap g :YcmCompleter GoTo
"nnoremap d :YcmCompleter GoToDeclaration
"nnoremap t :YcmCompleter GetType
"nnoremap p :YcmCompleter GetParent

let g:ycm_keep_logfiles = 1
let g:ycm_log_level = 'debug'
"let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
let g:ycm_confirm_extra_conf = 0
let g:ycm_key_list_select_completion = ['','']
let g:ycm_key_list_previous_completion = ['','']
let g:ycm_autoclose_preview_window_after_completion = 1
let g:ycm_warning_symbol = '>*'
let g:ycm_global_ycm_extra_conf = '~/.vim/plugged/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' "YCM fix

 

저장하고 vim을 키고 명령모드에서 :PlugInstall을 입력하면 아래의 사진과 같은 모습일 것이다.

위 플러그인은 필자가 사용하는 플러그인이라 많은건데 이 글을 따라하는 사람은 YCM과 vim-go 2개만 보일거다.

설치가 끝나면 명령모드에서 :q로 vim을 꺼주고

YCM셋팅을 하러 가보자.

$ cd ~/.vim/plugged/YouCompleteMe/

$ python3 ./install.py --all

완료된 모습

자동완성과 vim에서 go를 사용하기 위한 기본이 끝났다.

vim-go가 제대로 깔렸으면 $ vim main.go를 했을때 아래와 같은 기본 템플릿이 보이면 잘 설치된 것이다.

Go로 프로젝트 환경 구축

Go언어를 이제 막 배우고 웹백엔드 프로젝트를 진행해보려는데 막상 시작하려니 어떤식으로 셋팅해야하는지 잘 몰랐는데 다른 사람들은 이 과정을 없길 바라며 작성해본다.

 

Go는 $HOME/go 아래에서 다양한 프로젝트를 관리하도록 강요한다. 

따라서 $HOME/go 아래에다 프로젝트 디렉토리를 생성해주면 된다. (깃허브로 소스코드를 관리한다고 가정)

$HOME/go/src/github.com/github_id/project_name

 

$HOME/go/src/github.com/github_id/project_name에 cmd/project_name/main.go와 pkg/test.go를 만들자

디렉토리 구조는 이런 느낌

 

/cmd/project_name/main.go
/pkg/test.go

 

코드를 작성하고 main.go 있는 곳으로 이동해서 빌드하기 앞서서 프로젝트의 root 디렉토리에서 go.mod를 생성해주자

 

$ go mod init github.com/github_id/project_name

 

이제 빌드해주면 끝

 

$ cd cmd/project_name/

$ go build

$ ./project_name

잘 돌아간다~

 

프로젝트 구조에 관한 더 많은 내용은 여기를 참조하자

github.com/golang-standards/project-layout

 

golang-standards/project-layout

Standard Go Project Layout. Contribute to golang-standards/project-layout development by creating an account on GitHub.

github.com

 

내가 만약 오픈소스 Go 코드(원격 패키지)를 사용하고 싶으면 어떻게 헤야할까?

오픈소스 프로젝트에서 import할 url을 줄 것이다. 예를 들면 gihtub.com/github_id/project_name과 같이.

프로젝트의 루트 디렉토리에서  $ go get github.com/github_id/project_name 를 입력하면 go.mod에 자동으로 패키지가 추가되고 우리가 소스코드에서 import해서 사용하면 된다.

 

github.com/golang-kr/golang-doc/wiki/Go-코드를-작성하는-방법

 

golang-kr/golang-doc

Korean Translation of golang.org/doc. Contribute to golang-kr/golang-doc development by creating an account on GitHub.

github.com

 

반응형

'Programming > Go' 카테고리의 다른 글

[Go] net/http routing  (0) 2021.03.26
좋은 API 디자인  (0) 2021.03.26
[Go] JSON encode/decode  (0) 2021.01.09
[Go] A Tour of Go Exercise: Web Crawler  (0) 2020.12.09
[Go] Mutex  (0) 2020.12.08
Comments