2장. 개발 환경 준비
본격적인 Go 학습을 위해 개발 환경을 갖춘다. 이 장의 끝에서는 본인 컴퓨터에서 첫 Go 프로그램을 실행할 수 있게 된다.
목표:
- Go 컴파일러 설치하기
- 에디터 준비하기
- Hello, World 직접 띄워 보기
go run과go build의 차이 이해하기
2.1 Go 설치
macOS
가장 쉬운 방법은 Homebrew 다.
brew install go
Homebrew 가 없다면 공식 사이트에서 .pkg 파일을 받아 설치한다.
- 공식 다운로드: https://go.dev/dl/
Windows
공식 사이트에서 .msi 인스톨러를 다운로드한다.
- https://go.dev/dl/
다운로드한 파일을 실행해 안내에 따라 진행하면 끝이다. PATH 환경변수도 자동으로 설정된다.
Linux
배포판 패키지 매니저(apt, dnf 등)를 써도 되지만,
공식 최신 버전을 직접 받는 것을 추천한다.
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
# PATH 추가
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
설치 확인
설치가 끝났다면 터미널에서 다음 명령을 실행한다.
go version
다음과 같은 출력이 나오면 성공이다.
go version go1.22.0 darwin/amd64
GOPATH / GOROOT 에 대해
옛날 자료를 보면 GOPATH 환경변수 얘기가 자주 나온다.
Go 1.11 이후 모듈 시스템이 등장하면서
GOPATH 를 직접 설정할 일은 거의 사라졌다.
이 책은 모듈 방식만 다루므로 그냥 무시해도 된다.
| 용어 | 설명 | 신경 써야 하나? |
|---|---|---|
| GOROOT | Go 자체가 설치된 경로 | 아니오 (자동) |
| GOPATH | 옛날 코드 저장 경로 | 거의 아니오 |
2.2 에디터 선택
VS Code + Go 확장 (가장 추천)
가장 무난하고 사용자도 많다.
- https://code.visualstudio.com/ 에서 VS Code 설치
- 확장 마켓플레이스에서 “Go” 검색 후 설치
- 제공자: Go Team at Google
- 처음
.go파일을 열면 부속 도구 자동 설치 안내가 뜬다- 모두 설치한다 (
Install All)
- 모두 설치한다 (
자동 완성, 정의로 이동, 리팩터링, 디버깅이 전부 작동한다.
GoLand
JetBrains 의 유료 IDE 다. 회사에서 Go 를 본격적으로 쓴다면 투자할 가치가 있다.
Vim / Neovim
vim-go 또는 gopls 기반 LSP 플러그인을 쓰면 된다.
이미 Vim 에 익숙하다면 굳이 옮길 필요는 없다.
이 책은 VS Code 기준으로 설명한다.
2.3 첫 프로그램: Hello, World
작업 디렉터리 만들기
원하는 위치에 디렉터리를 하나 만든다.
mkdir hello
cd hello
모듈 초기화
go mod init example.com/hello
이 명령을 실행하면 디렉터리 안에 go.mod 파일이 생긴다.
module example.com/hello
go 1.22
module은 이 프로젝트의 이름- 자리에는 보통 GitHub 주소 같은 걸 적는다
- 아직 외부 패키지를 받지 않으므로
example.com/hello처럼 임의 이름을 써도 된다
모듈 자체에 대한 자세한 내용은 20장에서 다룬다. 지금은 “Go 프로젝트는 모듈로 시작한다” 정도만 알면 충분하다.
main.go 작성
main.go 파일을 만들고 다음 내용을 적는다.
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
실행
go run main.go
다음과 같은 출력이 나오면 성공이다.
Hello, World!
코드 한 줄씩 미리 보기
이 짧은 코드에 Go 의 기본 구조가 다 들어 있다. 자세한 설명은 다음 장(3장)에서 다루지만 살짝 미리 본다.
| 줄 | 의미 |
|---|---|
package main | 이 파일은 main 패키지에 속한다 |
import "fmt" | 표준 라이브러리의 fmt 패키지를 가져온다 |
func main() | 프로그램이 시작되는 함수 |
fmt.Println(...) | 화면에 한 줄 출력 |
2.4 go run 과 go build 의 차이
같은 코드를 두 가지 방식으로 다룰 수 있다.
go run
go run main.go
- 빌드와 실행을 한 번에 한다
- 결과 실행 파일은 임시 경로에 만들어지고 명령이 끝나면 사라진다
- 개발 중 빠르게 확인할 때 쓴다
go build
go build
- 실행 파일을 현재 디렉터리에 만든다
- macOS / Linux:
hello - Windows:
hello.exe
- macOS / Linux:
- 만들어진 파일은 이후에도 그대로 실행 가능
- 배포할 때 쓴다
./hello
한 줄 요약
| 명령 | 언제 쓰나 |
|---|---|
go run | 코드 짜면서 즉시 확인 |
go build | 배포용 실행 파일을 만들 때 |
둘 다 내부적으로는 컴파일을 수행한다. 결과물을 남기느냐 마느냐만 다르다.
2.5 정리
- Go 컴파일러를 설치하고
go version으로 확인했다 - VS Code 와 Go 확장을 준비했다
- 첫 프로그램 Hello, World 를 띄워 보았다
- 모듈 초기화 (
go mod init) 와 실행 흐름을 익혔다 go run과go build의 차이를 이해했다
손이 풀렸으면 됐다. 다음 장에서는 방금 짠 Hello, World 코드의 각 줄이 정확히 무엇을 의미하는지 들여다본다.