GO는 간단하고 안정적이며 효율적인 소프트웨어를 쉽게 구축 할 수 있는 오픈 소스 프로그래밍 언어이다. – golang.org
Go 언어란?
2007년경 구글에서 개발한 언어로 공식 홈페이지에서 보여지듯 간단하고 안정적이며 효율적인 언어를 지향한다.
언어 자체에서 GC(Galbage Collection)을 지원하고 다른 언어에 비해 문법이 간단하다. 무엇보다 키워드의 수가 적다.
또한 OS에 종속되지 않고 크로스컴파일(Cross-Compile)을 지원한다.
GoRoutine 이란?
GoRutine(고루틴)이란 Go Runtine 이 관리하는 스레드이다.
go에서 ‘go’ 키워드를 사용해 함수를 호출하면 go runtime시 새로운 goroutine 을 실행한다.
Channel은 흔히 goroutine들 사이에서 data를 주고 받는데 사용되는데, 상대편이 준비될 때까지 channel에서 대기함으로써 별도의 lock을 걸지 않고 data를 동기화하는데 사용된다.
goroutine은 스레드와 유사하지만 더 적은 메모리를 소비하여 더 적은 양의 코드로 구현할 수 있는 데이터 구조이다. 또한 goroutine 이 필요한 데이터를 먼저 사용하기 위해 경쟁하는 것이 아니라 goroutine 간에 데이터를 서로 전송할 수 있기에 프로그래밍 모델이 더 간결해진다.
goroutine 은 go runtime에 따라 자동적으로 goroutine 을 실행하며 go 에서는 여러개의 goroutine이 하나의 스레드에서 동작한다.