Skip to main content

Posts

Let thine heart retain my words: Keep my commandments, and live.

Golang Setup

· 5 min read
Jeongwon Her

go
고(Golang) 개발환경 구축하기

고 설치하기

설치파일

공식 사이트 에서 최신 버전의 고를 다운받을 수 있습니다.

커맨드라인

커맨드라인으로 설치할 수도 있습니다.

# windows
> choco install golang

# ubuntu debian
$ apt install golang-go

# mac
% brew install golang

설치를 완료하고 확인해 봅시다.

> go version
go version go1.16.7 windows/amd64

IDE 구성하기

Visual Studio Code

vscode

범용적으로 사용하는 IDE 입니다. 다른 언어와 함께 통합 개발이 편합니다. 확장 탭에서 고언어 확장을 설치해 줍니다.


Lite IDE

lite-ide

고 전용으로 나온 IDE 입니다. 고를 위해 만들어져 디테일한 편리함이 있습니다.

[공식]Lite IDE

이 밖에도 JetBrain 등 다양한 IDE가 있습니다.


프로젝트 생성

고언어의 프로젝트 구조는 어떻게 될까요?

GOPATH

Go 언어의 import를 보면 조금 특이합니다.

import (
"context"
"fmt"
"log"

"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
)

인터넷에 있는 소스 코드를 받아와서 바로 사용하고 있습니다. 그렇다면 이 소스코드는 어디에 저장될까요?

고언어 프로젝트를 생성하면 bin, pkg, src 디렉토리를 생성합니다. 각각의 디렉토리 역할은 다음과 같습니다.

  • bin: 컴파일된 실행파일(바이너리)이 생성되는 디렉토리입니다.
  • pkg: 패키지를 컴파일한 라이브러리 파일이 생성되는 디렉토리입니다. {운영체제}_{아키텍처} 형식으로 디렉토리를 생성합니다. 예) linux_amd64
  • src: 작성한 소스파일과 인터넷에서 다운로드한 소스 파일이 저장되는 디렉토리입니다. 왜 제거에는 없죠?

다운로드 소스 파일은 %USERPROFILE%\go 경로에 저장되는 것으로 보입니다.(Windows)

프로젝트를 생성했다면, 프로젝트 디렉토리 경로로 GOPATH를 설정해야 합니다. 윈도우에서는 제어판->시스템 및 보안->시스템->고급 시스템 설정->고급->환경 변수 에서 설정할 수 있습니다. CLI를 사용해도 됩니다.

# linux/mac
$ export GOPATH=${project_pwd}

# 다음 명령어로 확인합니다
$ go env

여기서 GOROOT는 빌트인 패키지 저장 위치입니다. C:\Program Files\Go


Go modules

당연하게도 import한 인터넷 소스를 다운받지 않고 빌드/실행하면 오류가 발생합니다. 패키지 관리를 위한 go.mod 파일 생성과 소스 다운로드를 하려면, 다음 명령어를 사용합니다.

> go mod init ${project}
go: creating new go.mod: module "project"
go: to add module requirements and sums:
go mod tidy

> go mod tidy
go: finding module for package google.golang.org/grpc/credentials
go: finding module for package google.golang.org/grpc
go: found google.golang.org/grpc in google.golang.org/grpc v1.39.1
go: found google.golang.org/grpc/credentials in google.golang.org/grpc v1.39.1

go.mod 파일을 만드는 것이 필수 가 되었습니다.
Go modules are the future of dependency management in Go


Tips

학생일 때 GOPATH로 참 헤맸습니다.

Reference

[공식]고 설치
가장 빨리 만나는 Go 언어
[공식]Go modules