Go (프로그래밍 언어)

IT 위키
인공무능 (토론 | 기여)님의 2025년 6월 15일 (일) 06:53 판 (새 문서: 고(Go, Golang)는 구글에서 로버트 그리즈머(Robert Griesemer), 롭 파이크(RRob Pike), 켄 톰프슨(Ken Thompson)이 2007년에 개발을 시작하고, 2009년 첫 공개 버전을 발표한 정적 타입의 컴파일 언어이다. 간결성과 성능, 병행성(concurrency)을 중점으로 설계되었으며, 특히 서버·클라우드 환경에서 인기를 끌고 있다. ==개요== 고는 C 언어의 문법적 간결함과 런타임 효율성을 유지하면서...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

고(Go, Golang)는 구글에서 로버트 그리즈머(Robert Griesemer), 롭 파이크(RRob Pike), 켄 톰프슨(Ken Thompson)이 2007년에 개발을 시작하고, 2009년 첫 공개 버전을 발표한 정적 타입의 컴파일 언어이다. 간결성과 성능, 병행성(concurrency)을 중점으로 설계되었으며, 특히 서버·클라우드 환경에서 인기를 끌고 있다.

개요[편집 | 원본 편집]

고는 C 언어의 문법적 간결함과 런타임 효율성을 유지하면서도, 가비지 컬렉션, 런타임 타입 검사, 풍부한 표준 라이브러리, 그리고 병행성 지원을 제공하는 것이 특징이다. 대부분의 기능이 언어 스펙 내에 포함되어 있어 외부 의존성이 적고, 빌드 및 배포가 간편하다.

특징[편집 | 원본 편집]

  • 정적 타입컴파일-타임 오류 검사
  • 가비지 컬렉션 제공으로 메모리 관리 자동화
  • 병행성 지원: 고루틴(goroutine)과 채널(channel)을 통한 CSP 스타일 지원
  • 단일 바이너리 생성: 실행 파일에 모든 의존성 포함
  • 크로스-컴파일 내장: 다양한 플랫폼을 타겟으로 손쉽게 컴파일 가능
  • 표준 툴체인: go fmt, go test, go build, go mod 등 일관된 개발 환경 제공

역사[편집 | 원본 편집]

  • 2007년: 구글 내부 프로젝트 시작 (Griesemer, Pike, Thompson)
  • 2009년: 첫 공개 베타 릴리스
  • 2012년: Go 1.0 출시, 안정 API 보장 시작
  • 이후 매 6개월마다 정기 릴리스 진행

장단점[편집 | 원본 편집]

장점[편집 | 원본 편집]

  • 간결한 문법과 쉬운 학습 곡선
  • 고루틴을 이용한 매우 가벼운 병행 처리
  • 빠른 컴파일 속도와 고성능 실행
  • 강력한 표준 라이브러리와 공식 툴 지원
  • 풍부한 패키지 생태계 (예: 웹, 네트워크, 데이터베이스 등)

단점[편집 | 원본 편집]

  • 제네릭 이후진: Go 1.18에서 제네릭 도입, 하지만 여전히 C++이나 Rust 같은 언어에 비해 기능 제한 있음
  • 메타프로그래밍 제한: 리플렉션 지원은 있으나 매크로 시스템 없음
  • 모듈 시스템 복잡: 초기 GOPATH 방식과 go modules 간의 혼용으로 혼란 발생 가능

활용 분야[편집 | 원본 편집]

  • 서버 / 클라우드 백엔드 (예: Docker, Kubernetes도 Go로 작성됨)
  • 마이크로서비스 / API 서버
  • DevOps 도구 및 CLI 유틸리티
  • 네트워크 서비스 / 분산 시스템
  • 웹 프레임워크 (예: Gin, Echo)

주요 생태계[편집 | 원본 편집]

  • Go Toolchain: go 커맨드 툴 (go build, go test, go fmt, go mod)
  • 패키지 저장소: pkg.go.dev, GitHub 등
  • 병행성 모델: 고루틴(goroutine), 채널(channel)
  • 웹 프레임워크: Gin, Echo, Fiber 등
  • DevOps 도구: Docker, Kubernetes, Terraform, Consul 등

컴파일러 및 런타임[편집 | 원본 편집]

  • gc – 공식 Go 컴파일러 (Go toolchain 내장)
  • gccgo – GCC 프론트엔드 버전
  • TinyGo – 마이크로컨트롤러 및 WASM용 경량 컴파일러

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]

  • Griesemer, R., Pike, R., Thompson, K. (2009). The Go Programming Language: Design and Implementation.
  • Donovan, A. A., & Kernighan, B. W. (2015). The Go Programming Language. Addison-Wesley.
  • Official Go Blog 및 Go 1.0 릴리스 노트.

각주[편집 | 원본 편집]