🚀 GO 환경설정 및 설치
📋 목차
1. Go 설치
💻 운영체제별 설치
macOS
# Homebrew로 설치 (권장)
brew install go
# 또는 공식 사이트에서 다운로드
# https://golang.org/dl/Ubuntu/Debian
# APT로 설치
sudo apt update
sudo apt install golang-go
# 또는 최신 버전 설치
wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gzWindows
# Chocolatey로 설치
choco install golang
# 또는 공식 MSI 설치 파일 다운로드
# https://golang.org/dl/✅ 설치 확인
# Go 버전 확인
go version
# 출력 예시: go version go1.21.4 darwin/amd64
# Go 환경 정보 확인
go env🔧 환경변수 설정
# ~/.bashrc 또는 ~/.zshrc에 추가
export GOROOT=/usr/local/go # Go 설치 경로
export GOPATH=$HOME/go # Go 작업공간
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
# 설정 적용
source ~/.bashrc # 또는 source ~/.zshrc2. 개발 환경 구성
🎨 VS Code 설정
필수 확장 프로그램
1. Go (공식) - ms-vscode.go
2. Go Test Explorer - premparihar.gotestexplorer
3. GitLens (옵션) - eamodio.gitlens
VS Code 설정 추가
// settings.json에 추가
{
"go.useLanguageServer": true,
"go.toolsManagement.autoUpdate": true,
"go.lintOnSave": "package",
"go.formatTool": "goimports",
"go.testFlags": ["-v"],
"editor.formatOnSave": true
}🛠️ Go Tools 설치
# Go 개발 도구들 설치
go install golang.org/x/tools/gopls@latest # Language Server
go install golang.org/x/tools/cmd/goimports@latest # Import 관리
go install github.com/go-delve/delve/cmd/dlv@latest # 디버거
go install honnef.co/go/tools/cmd/staticcheck@latest # 정적 분석
# VS Code에서 자동 설치
# Ctrl+Shift+P -> "Go: Install/Update Tools"🏗️ 다른 IDE 옵션
GoLand (JetBrains)
- 상용 IDE, 강력한 기능
- 디버깅, 리팩토링, 테스팅 지원
- 30일 무료 체험
Vim/Neovim
" vim-go 플러그인
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }3. 첫 번째 Go 프로그램
📁 프로젝트 생성
# 프로젝트 디렉토리 생성
mkdir hello-go && cd hello-go
# Go 모듈 초기화 (중요!)
go mod init github.com/yourusername/hello-go
# 또는 간단히
go mod init hello-go👋 Hello World
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}▶️ 실행 방법
# 1. 직접 실행 (개발 중)
go run main.go
# 2. 빌드 후 실행 (배포용)
go build -o hello main.go
./hello
# Windows에서는
go build -o hello.exe main.go
hello.exe
# 3. 크로스 컴파일 (다른 OS용)
GOOS=linux GOARCH=amd64 go build -o hello-linux main.go
GOOS=windows GOARCH=amd64 go build -o hello.exe main.go4. 프로젝트 구조
📂 표준 Go 프로젝트 구조
my-go-project/
├── go.mod # 모듈 정의
├── go.sum # 의존성 체크섬
├── main.go # 메인 파일
├── README.md # 프로젝트 설명
├── cmd/ # 실행 파일들
│ ├── server/
│ │ └── main.go
│ └── client/
│ └── main.go
├── internal/ # 내부 패키지 (외부 접근 불가)
│ ├── config/
│ ├── handler/
│ └── service/
├── pkg/ # 외부 공개 패키지
│ ├── api/
│ ├── model/
│ └── utils/
├── test/ # 테스트 파일
├── docs/ # 문서
├── scripts/ # 스크립트
└── deployments/ # 배포 설정
🔍 주요 디렉토리 설명
cmd/ - 실행 파일
// cmd/server/main.go
package main
import (
"fmt"
"log"
"net/http"
"github.com/yourusername/my-project/internal/handler"
)
func main() {
http.HandleFunc("/", handler.HomeHandler)
log.Println("Server starting on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}internal/ - 내부 패키지
// internal/handler/home.go
package handler
import (
"fmt"
"net/http"
)
func HomeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello from Go server!")
}pkg/ - 공개 패키지
// pkg/utils/string.go
package utils
import "strings"
// 외부 패키지에서 사용 가능
func Capitalize(s string) string {
if len(s) == 0 {
return s
}
return strings.ToUpper(s[:1]) + strings.ToLower(s[1:])
}📦 Go 모듈 관리
go.mod 파일
module github.com/yourusername/my-project
go 1.21
require (
github.com/gorilla/mux v1.8.0
github.com/joho/godotenv v1.4.0
)
require (
github.com/gorilla/context v1.1.1 // indirect
)의존성 관리 명령어
# 의존성 추가
go get github.com/gorilla/mux
# 특정 버전 추가
go get github.com/gorilla/mux@v1.8.0
# 의존성 정리 (사용하지 않는 것 제거)
go mod tidy
# 의존성 다운로드
go mod download
# 의존성 검증
go mod verify
# 벤더 디렉토리 생성 (모든 의존성 복사)
go mod vendor🔧 개발 워크플로
1. 새 프로젝트 시작
mkdir my-new-project
cd my-new-project
go mod init github.com/username/my-new-project2. 코드 작성
// main.go
package main
import "fmt"
func main() {
fmt.Println("Starting new Go project!")
}3. 테스트 작성
// main_test.go
package main
import "testing"
func TestMain(t *testing.T) {
// 테스트 코드
}4. 실행 및 테스트
# 코드 포맷팅
go fmt ./...
# 코드 검사
go vet ./...
# 테스트 실행
go test ./...
# 프로그램 실행
go run main.go5. 빌드 및 배포
# 로컬 빌드
go build -o myapp
# 최적화된 빌드 (바이너리 크기 축소)
go build -ldflags="-s -w" -o myapp
# 다중 플랫폼 빌드
GOOS=linux go build -o myapp-linux
GOOS=windows go build -o myapp.exe🚨 자주 하는 실수
1. GOPATH 혼동
주의사항
Go 1.11+ 에서는 모듈 시스템을 사용하므로 GOPATH 설정이 필수가 아닙니다.
# 잘못된 방법 (구버전 방식)
export GOPATH=$HOME/go
cd $GOPATH/src/github.com/user/project
# 올바른 방법 (모듈 방식)
mkdir my-project
cd my-project
go mod init my-project2. 패키지 명명
// 잘못된 예시
package myPackage // 카멜케이스 X
package my_package // 언더스코어 X
// 올바른 예시
package mypackage // 소문자
package handler // 간결하고 명확3. 의존성 관리
# 잘못된 방법
go get github.com/some/package
# go.mod 없이 직접 설치
# 올바른 방법
go mod init myproject # 먼저 모듈 초기화
go get github.com/some/package✅ 체크리스트
설치 완료 확인
- Go 설치 완료 (
go version작동) - 환경변수 설정 완료
- VS Code + Go 확장 설치
- Go tools 설치 완료
개발 준비 완료
- 첫 Hello World 프로그램 실행 성공
- go mod init 이해
- 기본 프로젝트 구조 파악
- 기본 명령어 숙지
다음 단계
환경 설정이 완료되었다면 GO 기본문법과 변수함수로 넘어가세요!