개요

Go (Golang)는 Google에서 개발한 간결하고 효율적인 프로그래밍 언어입니다. 복잡한 C++ 프로젝트의 빌드 시간과 코드 복잡성을 해결하기 위해 설계되었으며, goroutine 기반의 강력한 동시성 모델과 빠른 컴파일이 특징입니다.

  • 출시: 2009년 (오픈소스), 2012년 (1.0)
  • 설계자: Rob Pike, Ken Thompson, Robert Griesemer (Google)
  • 패러다임: 정적 타입, 컴파일 언어, 동시성 지향
  • 라이선스: BSD
  • 웹사이트: https://go.dev
  • 패키지: https://pkg.go.dev (40만+ 모듈)

핵심 특징

간결함 (Simplicity)

특징설명
25개 키워드언어 문법이 매우 작고 배우기 쉬움
단일 바이너리외부 의존성 없이 실행 가능한 바이너리 컴파일
gofmt코드 스타일 통일 (포맷터가 표준)
크로스 컴파일GOOS=linux GOARCH=amd64 go build로 간단히 교차 빌드
빠른 컴파일대규모 프로젝트도 수 초 내 빌드

Goroutine (동시성)

Go의 가장 강력한 기능. 경량 스레드로 수만~수십만 개를 동시에 실행 가능:

func main() {
    ch := make(chan string)
 
    go func() {
        ch <- "Hello from goroutine"
    }()
 
    msg := <-ch
    fmt.Println(msg)
}
항목OS 스레드Goroutine
메모리~1MB~2KB
생성 비용높음매우 낮음
동시 개수수천수십만
통신뮤텍스/락Channel

핵심 도구

도구설명
go build컴파일
go test테스트 (내장)
go fmt코드 포맷 (표준)
go mod모듈/의존성 관리
go vet정적 분석
go generate코드 생성
go mod init myproject
go build ./...
go test ./...
go run main.go

Go로 작성된 주요 프로젝트

프로젝트설명
Docker컨테이너 런타임
Kubernetes컨테이너 오케스트레이션
TerraformInfrastructure as Code
Prometheus모니터링 시스템
etcd분산 키-밸류 스토어
Hugo정적 사이트 생성기
CockroachDB분산 SQL DB

클라우드 네이티브 인프라의 사실상 표준 언어


장단점

장점:

  • 배우기 쉽고 코드가 일관적 (gofmt 강제)
  • goroutine으로 높은 동시성 처리
  • 단일 바이너리 배포 (의존성 없음)
  • 빠른 컴파일, GC 성능 지속 개선
  • 클라우드/DevOps 생태계 지배적

단점:

  • 제네릭 도입이 늦음 (Go 1.18, 2022년)
  • 에러 처리 반복적 (if err != nil)
  • OOP 부재 (상속 없음, 인터페이스로 대체)
  • GUI/모바일 앱 지원 약함

관련 항목