본문으로 건너뛰기

Go 프로젝트 세팅 완벽 가이드: 초보자도 5분이면 끝!

· 약 5분
Nam Young Kim
Data Fullstack Engineer

Go 언어를 시작하려는데 어디서부터 설정해야 할지 막막하신가요? 이 글에서는 Go 프로젝트를 시작하기 위한 모든 설정을 차근차근 알려드립니다.


Go란 무엇인가요?​

Go(또는 Golang)는 구글에서 만든 프로그래밍 언어예요. 마치 레고 블록처럼 간단하고 조립하기 쉬운 것이 특징이에요.

다른 언어들이 복잡한 퍼즐 같다면, Go는 단순한 레고 블록 같아요:

  • 배우기 쉬워요: 문법이 간단해서 빨리 익힐 수 있어요
  • 빨라요: 컴퓨터가 이해하기 쉬운 언어라 프로그램이 빠르게 동작해요
  • 여러 일을 동시에: 여러 작업을 동시에 처리하는 게 쉬워요 (마치 요리사가 여러 요리를 동시에 하는 것처럼!)

왜 이 도구들이 필요한가요?​

Go 프로젝트를 시작하려면 몇 가지 도구가 필요해요. 요리에 비유하면 이해하기 쉬워요!

도구요리 비유하는 일
mise레시피북"이 프로젝트는 Go 1.22 버전을 써야 해!"라고 기억해줘요
go.mod장보기 목록"이 프로젝트에 필요한 재료(라이브러리) 목록"을 관리해요
golangci-lint맛 검사기"이 코드에 문제 없나?" 자동으로 검사해줘요
VS Code최신 주방코드를 편하게 작성하는 도구예요

왜 mise를 쓰나요?​

컴퓨터에 Go 버전이 여러 개 필요할 수 있어요:

  • A 프로젝트: Go 1.21 필요
  • B 프로젝트: Go 1.22 필요

mise가 있으면 프로젝트 폴더에 들어갈 때 자동으로 맞는 버전을 선택해줘요!


5단계 세팅 가이드​

Step 1: mise 설치 및 Go 설치​

먼저 mise를 설치해요. 터미널을 열고 다음 명령어를 입력하세요:

# mise 설치 (Mac 사용자)
brew install mise

# ~/.zshrc에 mise 활성화 추가
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc

# 변경사항 적용
source ~/.zshrc

이제 mise로 Go를 설치해요:

# Go 1.22 버전 설치
mise use go@1.22

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

Step 2: 프로젝트 폴더 초기화​

새 프로젝트를 시작해봐요:

# 프로젝트 폴더 만들기
mkdir my-first-go-project
cd my-first-go-project

# Go 모듈 초기화 (장보기 목록 만들기!)
go mod init github.com/username/my-first-go-project

go mod init 명령어를 실행하면 go.mod 파일이 생겨요. 이 파일이 바로 "장보기 목록"이에요!

// go.mod 파일 내용
module github.com/username/my-first-go-project

go 1.22

Step 3: 첫 번째 Go 프로그램 작성​

main.go 파일을 만들어봐요:

package main

import "fmt"

func main() {
fmt.Println("안녕하세요, Go 세계에 오신 것을 환영합니다!")
}

실행해보세요:

go run main.go
# 출력: 안녕하세요, Go 세계에 오신 것을 환영합니다!

축하해요! 첫 번째 Go 프로그램을 만들었어요! 🎉

Step 4: golangci-lint 설치​

이제 "맛 검사기"를 설치할 차례예요:

# mise로 설치 (권장 - 프로젝트별 버전 관리)
mise use golangci-lint@latest

# 설치 확인
golangci-lint version

Step 5: 설정 파일 생성​

프로젝트에 필요한 설정 파일들을 만들어요. 아래 파일들을 프로젝트 루트에 생성하세요.


설정 파일 템플릿​

.mise.toml - 도구 버전 관리​

프로젝트에서 사용할 도구 버전을 고정해요:

[tools]
go = "1.22"
golangci-lint = "latest"

장점: 팀원 모두가 같은 버전을 사용하게 돼요!

.golangci.yml - 린터 설정​

golangci-lint v2 형식의 설정 파일이에요:

version: "2"

run:
timeout: 5m

linters:
enable:
- govet # Go 표준 검사
- errcheck # 에러 처리 안 한 것 찾기
- staticcheck # 버그, 성능 문제 찾기
- unused # 안 쓰는 코드 찾기
- ineffassign # 의미 없는 할당 찾기

formatters:
enable:
- gofmt # 코드 스타일 정리
- goimports # import 정리
settings:
goimports:
local-prefixes:
- github.com/username/my-first-go-project
각 린터가 뭘 하는지 궁금하다면? 클릭!
린터하는 일
govetGo 공식 검사 도구. 기본적인 실수를 찾아요
errcheckif err != nil 빼먹은 곳을 찾아요
staticcheck버그가 될 수 있는 코드를 찾아요
unused만들어놓고 안 쓰는 코드를 찾아요
ineffassign값을 넣어놓고 안 쓰는 변수를 찾아요

.vscode/settings.json - VS Code 설정​

VS Code에서 편하게 개발하기 위한 설정이에요:

{
"go.useLanguageServer": true,
"go.lintTool": "golangci-lint",
"go.lintFlags": ["--fast"],
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
"[go]": {
"editor.defaultFormatter": "golang.go"
}
}

이 설정이 하는 일:

  • 파일 저장할 때 자동으로 코드 정리
  • import 문 자동 정리
  • 린트 검사 자동 실행

Makefile - 명령어 단축키​

자주 쓰는 명령어를 짧게 만들어요:

.PHONY: build test lint run clean

build:
go build -o app ./cmd/app

test:
go test ./...

lint:
golangci-lint run

run:
go run ./cmd/app

clean:
rm -f app

이제 이렇게 짧게 쓸 수 있어요:

make build  # 빌드
make test # 테스트
make lint # 린트 검사
make run # 실행

전체 프로젝트 구조​

최종적으로 이런 구조가 돼요:

my-first-go-project/
├── .mise.toml # 도구 버전 관리
├── .golangci.yml # 린터 설정
├── .vscode/
│ └── settings.json # VS Code 설정
├── Makefile # 명령어 단축키
├── go.mod # Go 모듈 정보
├── go.sum # 의존성 체크섬 (자동 생성)
└── main.go # 메인 코드

새 프로젝트 체크리스트​

새 Go 프로젝트를 시작할 때 이 체크리스트를 따라하세요:

  • go mod init 실행
  • .mise.toml 생성
  • .golangci.yml 생성 (v2 형식)
  • .vscode/settings.json 생성
  • Makefile 생성
  • mise install 실행
  • make lint 동작 확인

mise 사용 팁​

mise를 더 잘 활용하는 방법:

# 프로젝트에 명시된 도구들 한 번에 설치
mise install

# 현재 활성화된 버전 확인
mise ls

# 특정 버전으로 변경
mise use go@1.21

꿀팁: 프로젝트 폴더에 들어가면 자동으로 .mise.toml의 버전이 적용돼요!


golangci-lint v2 주의사항​

최신 golangci-lint v2는 이전 버전과 설정 방식이 달라요:

변경 사항설명
version: "2" 필수설정 파일 맨 위에 버전 명시
formatters 분리gofmt, goimports가 별도 섹션으로
gosimple 통합staticcheck에 포함됨

마무리​

이제 Go 프로젝트를 시작할 준비가 됐어요! 정리하면:

  1. mise로 Go 버전 관리
  2. go.mod로 의존성 관리
  3. golangci-lint로 코드 품질 관리
  4. VS Code로 편하게 개발

다음 글에서는 Go 코드 철학 - 좋은 Go 코드란?에서 Go 언어의 설계 철학과 좋은 코드를 작성하는 방법을 알아볼게요!


참고 자료​