본문 바로가기
Go/Go Programming

[Go프로그래밍] Golang 설치 - gopath, goroot란? | 데인트리 라이브러리

by 데인트리 2021. 1. 4.

 

 

이 페이지에서는 golang 설치 및 환경 구성에 필요한 용어들에 대해 다룬다.

 

 

 

[개발환경]

Windows 10 Home

Ram: 8GB

에디터: VSCode

쉘: git bash (Git 설치 필요, git-scm.com/download/win)

 

1. golang 설치

 

Downloads - The Go Programming Language

Downloads After downloading a binary release suitable for your system, please follow the installation instructions. If you are building from source, follow the source installation instructions. See the release history for more information about Go releases

golang.org

사이트 접속 후 

 

설치파일을 다운로드 받는다.

 

 

설치 시에 경로를 선택하는 부분이 있는데, 여기서 설정한 부분이 Golang의 GOROOT가 된다.

 

설치 후 C:\Go로 이동해보면 아래와 같은 파일들을 확인할 수 있다.

C:\Go\bin 경로에는 실제 go 명령어 입력 시 실행되는 exe 파일이 존재한다.

 

2. vscode 연동

go 프로그래밍을 위해 vscode를 사용할 것이다. 먼저 Extension을 설치해야 한다. 아래의 순서를 통해 Go 익스텐션을 설치한다.

 

Go Extension을 설치할 경우 vscode에서 Go 언어를 인식하고 편집할 수 있지만, 자동완성, auto import와 같은 편리한 기능을 누리려면 추가 패키지를 설치해야 한다.

 

컨트롤+쉬프트+P를 누른 후 Go: Install/Update Tools를 검색하여 클릭한다.

왼쪽 맨 위 전체선택 버튼을 클릭한 후 OK를 클릭해 설치를 진행한다.

 

 

3. GOROOT, GOPATH 및 코드 관리

 

윈도우 + R 버튼을 눌러 실행창에서 cmd를 입력해서 실행한다.

go env를 입력하면 초기 golang의 환경을 확인할 수 있다.

GOROOT는 위에도 확인했듯이 GO가 설치된 경로이며 일반적으로 C:\go로 지정한다.

GOPATH는 기본으로 C:\Users\{유저명}\go 로 지정되어 있으며 Go 소스코드 및 외부 패키지가 저장되는 장소이다.

 

프로젝트의 소스코드는 GOPATH\src\{provider}\{account}\{repository} 형태로 저장된다. 이러한 저장 형태는 git과 같은 소스코드 저장소와의 연계를 간편하게 해준다. 

 

 

GOPATH\src\{코드레포지토리}\{계정}\{프로젝트}

 

위에 보이는 것처럼 깃허브에 저장된 daintree-henry 레포지토리의 learngo-master 프로젝트를 로컬에서 관리하려면, GOPATH\src\github.com\daintree-henry\learngo-master형태로 저장하면 된다. 

 

 

4. 외부 라이브러리 다운로드 및 코드 관리

 

내가 작성한 코드가 아닌 외부의 코드를 다운받을 경우도 동일하다. 우버에서 개발한 로깅 라이브러리인 zap을 내 코드에서 사용한다고 생각해보자, 소스코드의 주소는 go.uber.org/zap이다.

 

1) 먼저 코드를 다운받는다.

go get go.uber.org/zap

 

cmd에서 해당 명령을 수행하고 자신의 GOPATH\src를 확인해보면 go.uber.org 라는 새로운 패키지가 생성된 것을 확인할 수 있다. 

 

vscode에서 이 라이브러리를 사용하려면 라이브러리를 import해야 한다. 아래는 코드 작성 시 zap 라이브러리를 활용하기 위해 import한 코드 부분이다. 역시 src 아래의 경로를 그대로 사용해서 import 하게 된다.

 

 

 

 

 

내용에 오류가 있거나 이해가 안되는 부분이 있으면 댓글로 소통해주세요

언제나 환영합니다

댓글