완전한 Go 스타터 가이드: 설정, 문법 및 첫 번째 프로그램

발행: (2026년 1월 15일 오전 06:13 GMT+9)
9 min read
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 본문 텍스트를 제공해 주시겠어요?
코드 블록, URL 및 마크다운 형식은 그대로 유지하면서 내용만 한국어로 번역해 드리겠습니다.

소개

새로운 프로그래밍 언어를 배우고 코딩하고 싶지만, Java, Python, Rust, Go 등 선택할 언어가 너무 많다고 느낀 적이 있나요? 저는 직접 조사해 보았고, JetBrains 보고서(여기)에서 강조된 바와 같이 Go에 관심이 생겼습니다. Go는 약 4.8 백만 명의 사용자가 사용하고 있었습니다. 많은 기업이 높은 성능 덕분에 백엔드 개발 및 라이브러리용으로 Go를 널리 채택하고 있습니다.

Go의 장점은 앞으로의 글에서 다룰 예정이며, 여기서는 Go에 대한 간단한 배경을 소개합니다:

  • 구글에서 만든 언어이며, 첫 공개 릴리스는 2009년입니다.
  • 구글의 대규모 시스템 문제(느린 컴파일, 복잡성, 열악한 동시성 지원)를 해결하기 위해 설계되었습니다.
  • 간단하고, 개발자 친화적이며, 가독성이 높도록 설계되었습니다—C++이나 Java보다 접근성이 쉽지만, 그들의 강점을 많이 유지하고 있습니다.

이 글을 마치면 Go를 설치하고 첫 프로그램을 작성해 볼 수 있게 됩니다.

설치 및 검증

1단계 – 다운로드 및 설치

  1. 공식 다운로드 페이지를 방문하세요: .
  2. 운영 체제에 맞는 설치 프로그램을 다운로드하여 실행하세요.
  3. 설치 프로그램이 Go를 설정하고 필요한 경로를 구성합니다.

팁: macOS에서는 Homebrew를 통해 설치할 수도 있습니다: brew install go.

2단계 – 설치 확인

터미널(bash, PowerShell 등)을 열고 다음을 실행하세요:

go version
# Example output:
# go version go1.25.5 darwin/arm64

go version go1.21.5 …와 같은 출력이 보이면 설치가 성공한 것이며 Go를 사용할 준비가 된 것입니다.

Go 모듈이란?

Go 모듈go.mod 파일을 포함하는 Go 파일들의 모음입니다. go.mod 파일은 모듈의 이름과 의존성을 추적합니다. 과거에는 특별한 워크스페이스(GOPATH)를 통해 관리했지만, 이제는 모듈이 그 방식을 대체했습니다.

새 모듈 만들기

mkdir my-go-app
cd my-go-app
# <module-name>을 원하는 이름(예: 저장소 URL)으로 교체하세요
go mod init my-first-go-project

이 명령은 go.mod 파일을 생성하며, 이 파일이 Go 프로젝트의 루트가 됩니다. 이후 실행되는 모든 명령은 이 폴더를 기준으로 동작합니다.

Go mod init

Directory layout

향수를 불러일으키는 “Hello, World!”

프로젝트 폴더 안에 main.go 파일을 만들고 다음 코드를 추가하세요:

package main // Every executable program starts with package main

import "fmt"
// Unlike Python, where functions like print are built‑in,
// in Go they live in packages; we need fmt for printing.

func main() {               // Entry point of the program
    fmt.Println("Hello, World!") // Prints the text
}

실행 및 빌드: go run vs go build

go run — 빠른 테스트

왜 사용하나요? 코드를 즉시 확인하기 위해; 바이너리가 남지 않습니다.

go run main.go

Go run command

go build — 실행 파일 만들기

왜 사용하나요? Go가 설치되지 않은 머신에서도 공유하거나 나중에 실행할 수 있는 독립 실행 파일을 만들기 위해.

go build main.go   # 실행 파일 생성 (예: Windows에서는 main.exe)

명령을 실행하면 폴더에 바이너리 파일이 생깁니다 (macOS/Linux에서는 main, Windows에서는 main.exe`). 직접 실행할 수 있습니다.

현재 프로젝트 레이아웃

다음 명령을 실행하여 디렉터리 구조를 확인하십시오 (Windows에서는 dir 사용):

ls -la
# Output:
# my-go-app/
# ├── go.mod   # Module definition
# ├── main.go  # Source code
# └── main     # Compiled binary (or main.exe on Windows)

변수와 기본 타입

변수는 데이터를 저장하는 컨테이너입니다. Go는 정적 타입을 사용하므로 각 변수의 타입은 컴파일 시에 알려져야 합니다.

기본 타입

TypeDescription
string텍스트 (예: "Hello")
int정수 (예: 10, -10)
float64소수 (예: 3.14)
bool불리언 (true 또는 false)

변수를 선언하는 세 가지 방법

1. 전체 선언 (Verbose)

var name string = "Tom Cruise"
var age int
age = 25

2. 타입 추론 (Shorter)

var name = "Tom Cruise" // Go가 `string`을 추론합니다
var age = 25            // Go가 `int`를 추론합니다

3. 짧은 변수 선언 (함수 내부에서)

func main() {
    name := "Tom Cruise" // := 로 선언하고 타입을 추론합니다
    age := 25
    fmt.Println(name, age)
}

Go에서 변수 선언

아래는 Go에서 변수를 선언하는 다양한 방법과 간단한 예시입니다.

1. 전체 선언 (함수 외부)

package main

import "fmt"

var name string = "Tom" // 타입을 명시한 전체 선언
var age = 30             // 타입 추론 – Go가 `int`를 추론

func main() {
    fmt.Println(name, age)
}

2. 짧은 선언 (주로 함수 내부)

:= 연산자를 사용합니다. 변수 선언과 동시에 초기화를 수행합니다.

package main

import "fmt"

func main() {
    name := "Tom"   // string
    age := 25       // int
    isActor := true // bool
    height := 5.5   // float64

    fmt.Println(name, age, isActor, height)
}

3. 모두 합쳐 보기

다양한 선언 방식을 결합한 예시 main.go:

package main

import "fmt"

func main() {
    var name string = "Tom" // 전체 선언
    var age = 25            // 타입 추론
    isActor := true         // 짧은 선언 (main 내부)
    height := 5.5           // Float64

    fmt.Println(name, age, isActor, height) // 변수 사용

    age = 26 // 변수 값 변경
    fmt.Println(name, age, isActor, height) // 다시 변수 사용
}

다음은?

우리는:

  • Go를 설치했습니다
  • 모듈 기반 프로젝트를 만들었습니다
  • 첫 프로그램을 실행했습니다
  • 기본 데이터 타입과 변수 선언을 배웠습니다

직접 해보기

  • fmt.Println 문에서 메시지를 변경하세요.
  • 새 변수를 만들고 다른 값을 저장하세요.
  • int 변수에 문자열을 할당해 보고 컴파일러 오류를 확인하세요.
  • go build 로 실행 파일을 만들고 친구와 공유하세요.

다음 기사에서는 조건문반복문을 포함한 더 많은 구문을 다룰 것입니다.

도움이 필요하신가요? 출력 결과나 질문을 댓글로 남겨 주세요. 최선을 다해 답변하겠습니다.

Back to Blog

관련 글

더 보기 »