스근하게 Go 한 스푼

스근하게 Go 한 스푼

Golang 이란?

Go(Golang)는 Google에서 개발한 오픈소스 프로그래밍 언어로, 높은 성능과 간결한 문법을 제공하는 언어입니다.
2009년에 발표되었으며, 빠른 컴파일 속도와 강력한 동시성(concurrency) 지원이 특징입니다.
C 언어와 비슷한 성능을 내면서도 Python처럼 직관적인 코드 작성을 목표로 설계되었습니다.


Golang의 장점

Go 언어를 사용하면 다음과 같은 장점을 얻을 수 있습니다.

간결한 문법

  • 복잡한 기능 없이 직관적인 코드 작성 가능
  • fmt.Println("Hello, Go!")처럼 가독성이 뛰어남

강력한 동시성 지원

  • goroutine을 활용한 경량 스레드로 성능 최적화 가능
  • 병렬 처리 및 네트워크 프로그래밍에 적합

빠른 컴파일과 실행 속도

  • 정적 타입 언어이면서도 컴파일 속도가 빠름
  • 실행 속도가 C/C++에 근접

내장된 메모리 관리

  • 가비지 컬렉션(GC) 지원으로 메모리 관리 부담 감소

쉬운 배포

  • 단일 바이너리로 컴파일되어 배포가 간편
  • Docker/Kubernetes 환경에서 최적화된 운영 가능

golang을 사용 중인 프로젝트

kubernetes
prometheus
etcd

대규모 분산 시스템 및 클라우드 네이티브 환경에서 Go는 뛰어난 성능과 효율성, 동시성 처리 능력 덕분에 선택되었습니다. 또한 Go의 간결한 문법과 효율적인 실행 성능은 오픈소스로 다양한 분야의 사람들이 소스코드를 분석하고 수정하며 기여할 수 있게 합니다.


장점을 극대화를 위한 유닛 테스트

Go에서는 testing 패키지를 활용한 유닛 테스트 기능을 기본 제공하며, 이를 활용하면 코드의 안정성을 더욱 높일 수 있습니다. 저는 추가로 assert 패키지를 활용해 결과 검증을 하고 있습니다.

  • abc.go 의 테스트 파일은 abc_test.go 형식으로 작성됩니다.
  • go test 명령어를 실행하면 테스트를 자동으로 수행할 수 있습니다.
golang testcase snippet
golang testcase snippet. GitHub Gist: instantly share code, notes, and snippets.

예제용 테스트코드 스니펫을 공유드립니다.

이처럼 유닛 테스트를 적극 활용하면 Go의 성능과 안정성을 극대화할 수 있습니다.

Read more

비동기 프로그래밍 : golang

비동기 프로그래밍 : golang

비동기 프로그래밍의 필요성과 Go 언어의 등장 * 최신 애플리케이션은 높은 처리량과 낮은 지연 시간을 요구하며, 이는 단일 스레드 방식으로는 달성하기 어렵습니다. * 비동기/동시성 프로그래밍이 필수적이 되었지만, 기존 언어에서는 복잡한 스레드 관리, 락(Lock) 메커니즘 등으로 인해 개발 난이도가 높았습니다. * Go 언어는 이러한 문제를 해결하기 위해 Goroutine과 Channel이라는 독창적이고 강력한 동시성 프리미티브를