본문으로 건너뛰기

개발 환경 설정

Go 개발 환경을 구축하는 것은 매우 간단합니다. Go는 단일 바이너리로 배포되며, 설치 후 바로 개발을 시작할 수 있습니다. 이 섹션에서는 각 운영체제별 설치 방법부터 에디터 설정, 자주 쓰는 명령어까지 완전히 정리합니다.

Go 설치

Linux

방법 1: 공식 tar 파일 직접 설치 (권장)

# 기존 설치 제거 (있다면)
sudo rm -rf /usr/local/go

# Go 1.24 다운로드 (2024년 기준 최신 안정 버전)
wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz

# /usr/local에 압축 해제
sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz

# PATH 설정 (~/.bashrc 또는 ~/.zshrc에 추가)
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

# 설치 확인
go version
# 출력: go version go1.24.0 linux/amd64

방법 2: 패키지 매니저 (Ubuntu/Debian)

# snap을 통한 설치 (최신 버전 자동 업데이트)
sudo snap install go --classic

# apt-get (Ubuntu 저장소 버전은 구버전일 수 있음 — 비권장)
sudo apt-get install golang-go

macOS

방법 1: Homebrew (권장)

# Homebrew가 없다면 먼저 설치
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Go 설치
brew install go

# 설치 확인
go version
# 출력: go version go1.24.0 darwin/arm64

방법 2: 공식 installer

  1. https://go.dev/dl/ 접속
  2. go1.24.0.darwin-amd64.pkg (Intel) 또는 go1.24.0.darwin-arm64.pkg (Apple Silicon) 다운로드
  3. PKG 파일 실행 후 안내에 따라 설치
  4. 터미널에서 go version으로 확인

Windows

방법 1: MSI installer (권장)

  1. https://go.dev/dl/ 접속
  2. go1.24.0.windows-amd64.msi 다운로드
  3. MSI 파일 실행 후 안내에 따라 설치
  4. 설치 완료 후 새 PowerShell 또는 CMD 창에서 확인:
go version
# 출력: go version go1.24.0 windows/amd64

방법 2: Scoop (패키지 매니저)

# Scoop 설치 (없다면)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

# Go 설치
scoop install go

환경 변수 설정

Go 설치 후 이해해야 할 핵심 환경 변수들이 있습니다.

# 현재 Go 환경 변수 전체 출력
go env

주요 환경 변수:

변수설명기본값
GOROOTGo 표준 라이브러리 설치 경로/usr/local/go
GOPATHGo 작업 공간 경로 (모듈 캐시 등)~/go
GOMODCACHE다운로드된 모듈 캐시$GOPATH/pkg/mod
GOBINgo install로 설치된 바이너리 경로$GOPATH/bin
GOOS빌드 대상 OS현재 OS
GOARCH빌드 대상 아키텍처현재 아키텍처
GOPROXY모듈 다운로드 프록시https://proxy.golang.org
GONOSUMCHECK체크섬 검증 제외 패턴-

GOPATH/bin을 PATH에 추가(go install로 설치한 도구를 명령어로 실행하기 위해 필수):

# ~/.bashrc 또는 ~/.zshrc에 추가
export PATH=$PATH:$(go env GOPATH)/bin

특정 환경 변수 확인:

go env GOPATH       # /home/user/go
go env GOROOT # /usr/local/go
go env GOPROXY # https://proxy.golang.org,direct
go env GOMODCACHE # /home/user/go/pkg/mod

GOPATH 방식 vs Go Modules 방식

Go에는 두 가지 의존성 관리 방식이 있었습니다. Go 1.16부터 Go Modules가 기본 이며, GOPATH 방식은 더 이상 권장하지 않습니다.

GOPATH 방식 (구식, 비권장)

~/go/
src/
github.com/
username/
myproject/ ← 프로젝트 코드
pkg/ ← 컴파일된 패키지
bin/ ← 바이너리
  • 모든 프로젝트가 $GOPATH/src 아래에 있어야 함
  • 버전 관리가 어려움 (같은 패키지의 다른 버전 사용 불가)
  • go get이 최신 버전만 가져옴

Go Modules 방식 (현재 표준)

~/projects/
myproject/ ← 어디서든 프로젝트 생성 가능
go.mod ← 모듈 정의 파일
go.sum ← 체크섬 잠금 파일
main.go
  • 프로젝트를 어느 디렉토리에나 만들 수 있음
  • 정확한 버전 잠금으로 재현 가능한 빌드 보장
  • go.mod에 의존성이 명시됨

첫 프로젝트 생성

# 프로젝트 디렉토리 생성
mkdir hello-go && cd hello-go

# 모듈 초기화 (모듈 이름은 일반적으로 GitHub 경로 형식)
go mod init github.com/username/hello-go

# go.mod 파일이 생성됨
cat go.mod

go.mod 파일 내용:

module github.com/username/hello-go

go 1.24
  • module: 이 모듈의 고유 이름 (import 경로)
  • go: 사용하는 Go 버전

의존성 추가 후 go.mod 예시:

module github.com/username/hello-go

go 1.24

require (
github.com/fatih/color v1.16.0
github.com/gin-gonic/gin v1.9.1
)

go.sum 파일은 각 의존성의 암호화 해시를 저장하여 변조를 방지합니다. 직접 편집하지 않으며, go mod tidy 명령으로 자동 관리됩니다.

VS Code 설정

VS Code는 Go 개발에 가장 널리 쓰이는 에디터입니다.

Go 확장 설치

  1. VS Code 실행
  2. 확장 마켓플레이스 열기 (Ctrl+Shift+X)
  3. "Go" 검색 후 Go (by Go Team at Google) 설치
  4. VS Code 재시작 후 .go 파일 열면 자동으로 gopls 설치 안내

또는 명령줄로:

code --install-extension golang.go

Go Language Server (gopls)

gopls는 Go 공식 언어 서버로, 자동완성, 정의 이동, 리팩토링, 에러 하이라이팅 등 모든 IDE 기능의 기반입니다.

# 수동 설치
go install golang.org/x/tools/gopls@latest

settings.json 권장 설정

{
"go.useLanguageServer": true,
"go.formatTool": "gofmt",
"go.lintTool": "golangci-lint",
"go.lintOnSave": "package",
"go.formatOnSave": true,
"go.testOnSave": false,
"go.coverOnSave": false,
"go.buildOnSave": "package",
"go.vetOnSave": "package",
"editor.formatOnSave": true,
"[go]": {
"editor.defaultFormatter": "golang.go",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
}
}

디버깅 설정 (launch.json)

{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"args": [],
"env": {}
}
]
}

GoLand 기본 설정

JetBrains GoLand는 Go 전용 상용 IDE로, 강력한 리팩토링과 디버깅을 제공합니다.

  1. https://www.jetbrains.com/go/ 에서 다운로드
  2. 설치 후 Settings → Go → GOROOT 에서 Go SDK 경로 지정
  3. Settings → Go → Go Modules 에서 모듈 모드 활성화 확인
  4. 학생·오픈소스 프로젝트는 무료 라이선스 제공

go 명령어 완전 정리

명령어설명예시
go run소스 파일을 컴파일 없이 즉시 실행go run main.go
go build현재 패키지를 바이너리로 컴파일go build -o app ./...
go test테스트 파일(_test.go) 실행go test ./...
go mod init새 모듈 초기화go mod init github.com/user/proj
go mod tidy불필요한 의존성 제거, 필요한 것 추가go mod tidy
go get특정 버전의 패키지 추가/업데이트go get github.com/gin-gonic/gin@v1.9.1
go install패키지를 GOBIN에 바이너리로 설치go install github.com/air-verse/air@latest
go fmt코드 자동 포매팅 (gofmt 래퍼)go fmt ./...
go vet정적 분석으로 잠재적 버그 검출go vet ./...
go doc패키지/함수 문서 출력go doc fmt.Println
go envGo 환경 변수 출력go env GOPATH
go clean빌드 캐시 및 생성된 파일 삭제go clean -cache
go list패키지 목록 출력go list ./...
go work워크스페이스 관리 (멀티 모듈)go work init

자주 쓰는 명령어 예시

# 전체 프로젝트 테스트 (verbose 출력)
go test -v ./...

# 특정 테스트 함수만 실행
go test -run TestMyFunction ./...

# 커버리지 측정
go test -cover ./...

# 빌드 후 즉시 실행
go build -o app ./... && ./app

# 의존성 업데이트
go get -u ./...

# 사용하지 않는 의존성 정리
go mod tidy

# 패키지 문서 브라우저로 열기
go doc -http=:6060

gofmt — 자동 포매팅

Go는 언어 레벨에서 코드 스타일을 강제하는 gofmt 도구를 제공합니다. 탭 vs 스페이스 논쟁이 없습니다 — Go는 탭(tab) 을 사용합니다.

# 단일 파일 포매팅 (수정 사항 출력)
gofmt -d main.go

# 단일 파일 포매팅 (파일 직접 수정)
gofmt -w main.go

# 전체 프로젝트 포매팅
go fmt ./...

포매팅 전:

package main
import "fmt"
func main(){
fmt.Println("hello")
x:=1+2
}

포매팅 후:

package main

import "fmt"

func main() {
fmt.Println("hello")
x := 1 + 2
_ = x
}

gofmt는 저장 시 자동으로 실행되도록 에디터에 설정하는 것이 표준 관행입니다.

정리

이 섹션에서 다룬 내용:

  • OS별 Go 1.24 설치— Linux(tar), macOS(Homebrew), Windows(MSI)
  • 환경 변수GOROOT, GOPATH, GOBIN, GOPROXY의 역할
  • Go Modules— 현대 Go 프로젝트의 표준 의존성 관리 방식
  • VS Code 설정gopls, 자동 포매팅, 디버깅 설정
  • go 명령어run, build, test, mod, fmt, vet 등 핵심 명령어
  • gofmt— 코드 스타일을 강제하는 자동 포매터

환경 설정이 완료되었습니다. 다음 섹션에서 첫 번째 Go 프로그램을 작성해 보겠습니다.