Menu

Golang 설치: Windows, macOS, Linux 단계별 가이드

Windows, macOS, Linux에서 Go를 내려받아 설치하고, go version으로 설치를 확인하고, GOPATH를 이해하고, "go: command not found" 오류를 고치는 방법을 다룹니다.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

go.dev/dl에서 Go를 내려받고, 시스템에 맞는 설치 파일을 실행하고, 새 터미널을 열어 go version을 실행하세요. Windows와 macOS에서는 그게 설치의 전부입니다. Linux에서는 tarball을 풀고 디렉터리 하나를 PATH에 추가합니다. 아래 절에서 시스템별 방법을 다룬 뒤, 확인 방법과 실제로 자주 부딪히는 오류를 설명합니다.

써 보는 데는 Go를 설치할 필요가 없습니다. 이 프로그램은 이 사이트와 같은 Go 릴리스로 브라우저에서 실행되며, 어떤 환경에서 돌고 있는지 알려 줍니다:

로컬에 Go를 설치하고 나면 같은 프로그램이 여러분 컴퓨터의 정보를 출력합니다.

어떤 파일을 내려받을까

다운로드 페이지에는 운영체제와 CPU 아키텍처마다 파일이 하나씩 있습니다:

시스템파일참고
Windows, 대부분의 PCgo1.24.5.windows-amd64.msiamd64는 64비트 Intel 또는 AMD
ARM Windowsgo1.24.5.windows-arm64.msiSurface Pro X, Snapdragon 노트북
macOS, Apple Silicon (M1 이후)go1.24.5.darwin-arm64.pkgdarwin은 macOS
macOS, Intelgo1.24.5.darwin-amd64.pkg
Linux, 대부분의 서버와 PCgo1.24.5.linux-amd64.tar.gz
ARM Linuxgo1.24.5.linux-arm64.tar.gz64비트 OS를 쓰는 Raspberry Pi 4와 5, AWS Graviton

이 예제의 버전 번호는 1.24.5입니다. 가장 최신의 안정 릴리스를 받으세요. 버전이 바뀌어도 단계는 같습니다.

Windows에 Go 설치하기

  1. .msi 파일을 내려받아 실행합니다.
  2. 기본값을 그대로 둡니다. Go는 C:\Program Files\Go에 설치되고, 설치 프로그램이 C:\Program Files\Go\binPATH에 추가합니다.
  3. 열려 있는 명령 프롬프트나 PowerShell 창을 모두 닫고 새로 엽니다. 설치 중에 열려 있던 터미널은 여전히 예전 PATH를 갖고 있습니다.
  4. 설치를 확인합니다:
go version
go version go1.24.5 windows/amd64

패키지 관리자를 선호한다면 winget도 됩니다:

winget install GoLang.Go

macOS에 Go 설치하기

공식 패키지로

칩에 맞는 .pkg를 내려받아 엽니다. Go가 /usr/local/go에 설치되고, /etc/paths.d/go 파일을 통해 /usr/local/go/binPATH에 추가됩니다. 새 터미널 창을 열고 다음을 실행하세요:

go version
go version go1.24.5 darwin/arm64

Homebrew로

brew install go
go version

Homebrew는 Go를 자체 접두사(Apple Silicon에서는 /opt/homebrew) 아래에 두고, 이미 PATH에 있는 디렉터리에 go를 링크합니다. 나중에 brew upgrade go로 업그레이드하세요.

방법은 하나만 고르세요. .pkg와 Homebrew로 둘 다 설치하면 PATHgo 바이너리가 두 개 생기고, 먼저 오는 쪽이 이깁니다. 셸이 어느 것을 쓰는지는 which go로 알 수 있습니다.

Linux와 Ubuntu에 Go 설치하기

공식 방법은 모든 배포판에서 동작합니다. 먼저 이전 설치를 제거하세요. 오래된 트리 위에 풀면 두 버전의 파일이 섞여서 툴체인이 망가집니다:

cd ~/Downloads
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz

그다음 Go를 PATH에 추가합니다. ~/.profile(bash)이나 ~/.zshrc(zsh)에 다음 줄을 덧붙이세요:

export PATH=$PATH:/usr/local/go/bin

현재 셸에 불러온 뒤 확인합니다:

source ~/.profile
go version
go version go1.24.5 linux/amd64

Ubuntu 패키지: apt와 snap

Ubuntu에는 장단점이 다른 지름길이 두 가지 있습니다:

# Distribution package: easy, but usually several releases old
sudo apt install golang-go

# Snap: tracks current Go releases
sudo snap install go --classic

apt 버전 문제는 보기보다 중요합니다. 모듈은 go.mod에 최소 Go 버전을 선언합니다. Go 1.21부터는 go 1.23이라고 적힌 모듈을 Go가 더 새로운 툴체인을 대신 내려받을 수 없는 한 오래된 툴체인으로 빌드하지 않으며, 1.21보다 오래된 툴체인은 일단 빌드를 시도했다가 처음 만나는 새 기능에서 실패합니다(아래 "Go 최신 상태로 유지하기" 참고). apt로 설치했다면 go version을 실행해서 go.dev/dl과 비교하세요.

설치 확인하기

명령 세 개로 설정이 제대로 되었는지 확인할 수 있습니다:

go version
go env GOROOT GOPATH
which go
go version go1.24.5 linux/amd64
/usr/local/go
/home/ana/go
/usr/local/go/bin/go
  • GOROOT는 Go 자체가 설치된 곳입니다. 거기에 여러분의 코드를 두지 마세요. 설정할 필요도 없습니다.
  • GOPATH의 기본값은 $HOME/go(Windows에서는 %USERPROFILE%\go)입니다. Go는 내려받은 모듈을 $GOPATH/pkg/mod에 저장하고, go install로 빌드한 프로그램을 $GOPATH/bin에 둡니다.
  • which go(Windows에서는 where go)는 셸이 실행하는 정확한 바이너리를 보여 줍니다. go version이 예상과 다른 버전을 보고할 때마다 쓰세요.

첫 프로그램 실행하기

코드는 어느 디렉터리에든 둘 수 있습니다. 폴더를 만들고, 모듈을 시작하고, 파일을 작성하세요:

mkdir hello
cd hello
go mod init example.com/hello
go: creating new go.mod: module example.com/hello

그 폴더에 다음을 main.go로 저장합니다:

그리고 실행합니다:

go run .
Go is installed and working.

go run .은 현재 디렉터리의 패키지를 컴파일해서 실행합니다. 프로그램의 각 줄은 hello world 페이지에서, go mod init 단계는 Go 모듈 페이지에서 설명합니다.

GOPATH/bin을 PATH에 추가하기

go install로 설치한 도구는 기본적으로 PATH에 없는 $HOME/go/bin에 들어갑니다. 도구를 설치했는데 셸이 찾지 못한다면 이 디렉터리도 추가하세요:

go install golang.org/x/tools/cmd/goimports@latest
export PATH=$PATH:$(go env GOPATH)/bin
goimports -h

새 터미널에서도 유지되도록 export 줄을 ~/.profile이나 ~/.zshrc에 넣으세요. Windows에서는 설치 프로그램이 이미 %USERPROFILE%\go\bin을 사용자 PATH에 추가합니다.

Go 최신 상태로 유지하기

업그레이드하려면 이전 버전을 설치한 것과 같은 방법으로 새 릴리스를 설치하세요. Linux라면 rm -rf /usr/local/gotar 단계를 반복한다는 뜻입니다. 제거 단계를 건너뛰지 마세요.

Go 1.21부터는 go 명령이 필요할 때 더 새로운 툴체인을 가져올 수도 있습니다. 모듈의 go.modgo 1.24라고 적혀 있고 Go 1.22가 설치되어 있다면, GOTOOLCHAIN이 기본값 auto로 남아 있는 한 go build가 Go 1.24를 모듈 캐시에 내려받아 사용합니다. 설치된 Go는 그대로이고, 그 모듈만 더 새로운 릴리스로 빌드됩니다.

테스트용으로 이전 버전을 남겨 두려면 나란히 설치하세요:

go install golang.org/dl/go1.23.4@latest
go1.23.4 download
go1.23.4 version

흔한 설치 오류

go: command not found 또는 zsh: command not found: go. 셸이 바이너리를 찾지 못합니다. Linux라면 셸이 실제로 읽는 파일(zsh는 ~/.zshrc, bash는 ~/.profile이나 ~/.bashrc)의 export PATH 줄에 /usr/local/go/bin이 있는지 확인한 뒤 새 터미널을 여세요. echo $PATH로 셸이 가진 값을 볼 수 있습니다.

'go' is not recognized as an internal or external command (Windows). 터미널을 닫고 다시 여세요. 그래도 계속되면 "시스템 환경 변수 편집(Edit the system environment variables)"을 열고 환경 변수를 클릭해서 PathC:\Program Files\Go\bin이 있는지 확인하세요. VS Code의 내장 터미널은 VS Code가 시작될 때의 환경을 물려받으므로 VS Code도 다시 시작하세요.

업그레이드 후에도 go version이 예전 버전을 보여 줌. PATH에 설치가 두 개 있습니다. which -a go(Windows에서는 where go)를 실행해서 원하지 않는 쪽을 제거하세요. /usr/bin/go에 있는 apt 패키지가 /usr/local/go/bin/go를 가리는 경우가 많습니다.

go: go.mod file not found in current directory or any parent directory. Go는 제대로 설치되었고, 모듈 밖에서 go buildgo run .을 실행한 것입니다. 먼저 프로젝트 폴더에서 go mod init example.com/yourname을 실행하세요.

Linux에서 업그레이드 후 표준 라이브러리에서 이상한 컴파일 오류가 남. 새 tarball을 예전 트리 위에 푼 것입니다. /usr/local/go를 완전히 지우고 다시 푸세요.

압축을 풀 때 Permission denied. /usr/local은 root 소유이므로 rmtar 명령에는 sudo가 필요합니다. 여러분의 코드에는 sudo가 필요 없습니다.

에디터 설정

어떤 에디터든 되지만, 자동 완성, 오류 강조, 저장 시 포매팅을 쓰려면 Go 지원을 설치하세요. VS Code에서는 공식 Go 확장(Google의 Go 팀이 배포)을 설치하세요. .go 파일을 처음 열 때 Go 언어 서버인 gopls를 설치하겠다고 제안합니다. JetBrains의 GoLand가 대표적인 상용 도구입니다. Vim과 Neovim은 LSP 클라이언트를 통해 gopls를 씁니다.

자주 묻는 질문

Golang은 어떻게 설치하나요?

go.dev/dl에서 시스템에 맞는 설치 파일을 내려받습니다. Windows에서는 .msi를, macOS에서는 .pkg를(또는 brew install go) 실행하고, Linux에서는 tarball을 /usr/local에 풀고 /usr/local/go/binPATH에 추가합니다. 새 터미널을 열고 go version을 실행해 확인하세요.

"go: command not found"는 어떻게 고치나요?

셸이 PATH에서 go 바이너리를 찾지 못하는 것입니다. Linux에서는 ~/.profile(zsh라면 ~/.zshrc)에 export PATH=$PATH:/usr/local/go/bin을 추가한 뒤 새 터미널을 여세요. Windows와 macOS 설치 파일을 썼다면 보통 터미널을 닫았다가 다시 열면 해결됩니다. 터미널은 시작할 때의 PATH를 유지하기 때문입니다.

Ubuntu에 Go를 설치하려면 어떻게 하나요?

공식 tarball을 씁니다: sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz, 그다음 /usr/local/go/binPATH에 추가합니다. sudo apt install golang-go도 되지만 Ubuntu 패키지는 몇 릴리스 뒤처진 경우가 많습니다. sudo snap install go --classic은 최신 릴리스를 따라갑니다.

GOPATH를 설정해야 하나요?

아니요. Go 1.16부터 모듈 모드가 기본값이므로 코드는 어느 디렉터리에든 둘 수 있습니다. GOPATH의 기본값은 $HOME/go이며, 모듈 다운로드 캐시와 go install이 빌드한 바이너리에만 쓰입니다. 바이너리는 $HOME/go/bin에 들어갑니다.

설치된 Go 버전은 어떻게 확인하나요?

go version을 실행합니다. go version go1.24.5 linux/amd64처럼 릴리스와 운영체제, CPU 아키텍처가 출력됩니다. go envGOROOT(Go가 설치된 곳)와 GOPATH를 포함한 전체 설정을 보여 줍니다.

Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기