1. 컴파일 언어
golang은 소스코드를 기계어로 번역하여 실행파일을 만들어내는 언어임, 빠른 컴파일 속도를 가짐
2. 런타임 포함
- 런타임은 '프로그램이 실행되고 있는 환경' 또는 '프로그램 실행을 도와주는 백그라운드 시스템'을 의미
- 일반적인 Java나 JavaScript 같은 언어는 PC에 런타임을 설치해야하는 단점 존재
- golang의 경우 런타임을 실행파일 안에 포함시킴
- 내장된 런타임 기능(가비지 컬렉션, 고루틴 스케줄링)
3. Goroutine(고루틴)
- 기존 멀티스레딩: os가 제공하는 스레드를 여러 개 생성하여 동시에 여러 작업을 처리하는 방식, 하지만 context switching(컨텍스트 스위칭) 비용이 비쌈(스레드 생성 및 전환하는 것이 무거워서 서버 부하가 많음)
- 기존 비동기: 하나의 작업이 끝날 때까지 기다리지 않고 다른 작업을 먼저 처리하는 방식으로 코드가 복잡해지는 단점 있음(javascript의 경우 콜백 지옥)
Goroutine
- os 스레드 쓰지 않고 '자체 경량 가상 스레드'인 고루틴 사용
- 엄청 가볍고 사용이 쉬워 코드 깔끔