본문으로 건너뛰기

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 언어의 설계 철학과 좋은 코드를 작성하는 방법을 알아볼게요!


참고 자료