Go, 복잡한 거 질리시면 한 번만 써보세요.

동동·2025년 6월 2일
0
post-thumbnail

처음엔 "그냥 하나만 잘 하면 되지" 싶었다.
근데, 막상 언어에 대해 이것저것 알아보다 보면 자꾸 다른 언어들이 눈에 밟힌다.
그리고 꼭 이렇게 된다.

Python은 쉽고 빠르다고 하고
Java는 취업 보장이라고 하고
Rust는 성능 좋다고 하고
Go는 ..?

다들 자기 언어가 최고라고 함.

Go는 뭔가 구글이 만들었다고 해서 "오, 이거 뭔가 대단하겠는데?" 싶다가도 막상 보면 자유롭지도, 그렇다고 빡세지도 않다. 애매하다.

화려하지도 멋있지도 않은 거 같은데... 현실적으로 진짜 많이 쓸만하다.

그래서 Go가 뭐야?

Go는 2009년에 구글에서 공개한 프로그래밍 언어이다.
만든 사람들 중에는 "유닉스 만든 사람", "UTF-8 만든 사람"도 있음.
그냥 레전드들이 만든 딱 봐도 실용적인 언어

"C++ 너무 복잡하고, 빌드 느리고 고통이다.
그러니까 다 같이 덜 힘들게 쓰는 언어를 만들자."

이러한 배경에서 생긴 결과물이 Go 라고 한다.

왜 Go를 쓰게 되냐면...

직접 써보고 난 후 느낀 포인트는 딱 이거였다.

복잡한 거 하나도 없고, 바로 쓸 수 있겠다.


문법 진짜 깔끔하네?

Go는 괜히 꾸미는 걸 싫어하는 것 같고, 딱 필요한 것만 제공을 해준다.

  • 반복문? for.
  • 조건문? if.
  • 자료구조? struct.
  • 추상화? interface.

복잡한 상속이랑 추상 클래스 같은 거 없다.
깔끔하고 코드 스타일이 거의 비슷하게 나오기 때문에 협업할 때도 편할 듯하다.


정적인데, 부담이 없네

Go는 정적 타입 언어이다.

즉, 변수나 함수에 타입을 명시적으로 지정해야 하는데, 그게 전혀 부담이 되질 않는다.

var name string = "go"

이렇게 타입을 명시해서 써도 되지만,

name := "go"

이렇게 := 연산자를 쓰면 자동 타입 추론이 된다.

덕분에 코드가 짧아지고, 가독성 좋다.
컴파일 중에 타입 체크도 되니까 당연히 안정성까지 올라간다.


컴파일이 왜 이렇게 빨라

Go는 컴파일 언어이다.
근데 컴파일 속도는... 거의 인터프리터 언어 수준이다.

go build

이거 한 줄만 치면 1~2초 내외로 실행 파일이 뚝 하고 나온다.
심지어 모든 의존성이 포함된 단일 바이너리임.

  • 별도 런타임 설치 필요 없음.
  • 다른 서버에서 복사만 해도 실행됨.
  • Docker 이미지가 되게 작아짐.

배포가 진짜 미친 듯하다.

배포? 그냥 "딸깍 -> 실행"
다른 언어들처럼 가상환경이니 JVM이니 할 게 없다.


동시성? 그냥 'go'만 붙이면 되는데

Go가 자랑하는 것 중 하나가 바로 동시성 처리이다.
고루틴(goroutine)이라는 걸 쓰는데, 이게 진짜 간단하다.

go func() {
	fmt.Println("비동기 작업 ~~")
} ()

go 키워드 하나만 붙이면 비동기 실행이 시작된다.
복잡한 thread나 async/await, Promise 등 이런 거 신경 쓸 필요가 없다.

그리고 고루틴 간 데이터 통신은 channel로 하면 된다.

c := make(chan string)

go func() {
	c <- "msg from Goroutine"
} ()

fmt.Println(<-c)

덕분에 병렬처리, 동시성 처리를 쉽게 할 수 있다.

요약을 해보자면,

  • 문법은 심플하고 일관적이다..
  • 정적 타입이지만 유연하다.
  • 컴파일이 빠르고 배포가 간단하다.
  • 동시성은 그냥 미쳤다.

근데 단점은?

  • 클래스, 상속이 없어 불편함.

결론

Go는 화려하진 않다.
근데 실용적이고, 신뢰도가 높다.
처음 쓰는 언어인데도, 이만큼 편할 수가 없다.


profile
기술 블로그 → donghyeun02.com

0개의 댓글