Go는 컴파일언어이다. 때문에 인터프리터 언어보다 빠르다.
garbage collector가 효율적이다.
정적 타입이다.
mid-level managers가 적기 때문에 빠르다.
C나 Java에 이미 있는것들이 비슷하게 구현되어 있다.
Goroutines가 있다. Goroutine은 경량 스레드이다.
Go 언어 런타임에서 관리되는 논리적 스레드이다.
Goroutines는 2kB의 메모리를 차지하며 scalable하게 만든다.
반면 스레드는 약 1Mb의 메모리 공간을 소모하여 생성된다.
따라서 다른 언어에서는 스레드를 미리 만들어두고 재활용하는 스레드 Pool의 형태로 사용한다.
수백만개의 GoRoutines를 동시에 돌릴 수 있다.
editor가 많고, IDEs, plugins도 많다.
파이썬의 몇 줄이면 만들 수 있는 기능을 Golang에서는 더욱 많은 줄이 필요하다.
2007년부터 개발되기 시작하여 2009년에 발표되었다.
SDK나 interfaces가 부족하다.
이는 코드의 재사용성과 효율을 심각하게 해친다.
Google이 Golang을 만든 이유는 scalability의 software문제를 해결하기 위해서다.
Go는 processing time에서 bottleneck 문제를 해결하는데 도움을 준다.
또한, cloud-storage sharing service인 Dropbox는 5억 이상의 유저의 네트워크 효율성을 위해 Golang을 쓴다. 또한, e-commerce를 만드는 데에 사용한다.
Docker, Terraform, Kubernetes를 만드는 데에 사용한다.
Martini-like API의 성능에 초점을 두었다.
라우팅을 제공해 준다.
Go 프레임워크중에 가장 많이 사용된다.
Aero를 제외하고는 가장 높은 속도를 자랑한다.
빠르다.
HTTP request중의 error를 쉽게 추적할 수 있다.
HTTP request중의 panic을 잡아내고 복구할 수 있다.
개발이 유연하지 않다.
HTTP request의 다양한 파일 타입을 지원한다.
TLS가 자동적으로 적용된다.
scalable이 좋다.
확장성이 좋다.
느리다.
지원하는 community가 작다