20200513 Golang 기초

2020. 5. 13. 23:50개발/Go

다른 문법 같은 건 너무 기본적이고, python에서는 비슷한걸 써본적 없는 개념인 go routine에 대해 기록하겠다. go routine은 그 안의 함수를 실행하며 가상 스레드를 여러 개 생성하여 각각 함수가 실행된다. 그러면서 동시에 main에서는 go를 만난 순간 그 부분은 뛰어넘고 나머지 부분을 실행하게 된다. 즉 main과 go 각각에서 따로 실행이 되게 되는 것이다. 다음과 같은 예를 들어보자.

 

func main() {
	for i:=0; i<3; i++{
    	go func(n int){
        	fmt.Println("go routine", n)
        }(i)
    }
    
    fmt.Scanln()
}

 

위 코드를 보면 main함수에서 for 문을 만나고, 그 안에서 go routine을 만나면서 main은 그 다음 것을 실행시킨다. 그와 동시에 go routine은 세 개가 생성되며, 그 세개 중 무엇이 먼저 끝날지는 모른다. 그리고 끝에 fmt.Scanln()은 main이 먼저 끝날 것을 대비해 콘솔창에서 enter를 쳐야 main함수가 끝나도록 입력한 것이다. go routine과 관련해서 기능이 더욱더 많은데, 앞으로 차차 계속 설명해나가겠다.

'개발 > Go' 카테고리의 다른 글

20200715 Asynchronous and Parellel in Golang  (1) 2020.07.15
20200706 go compiler && go viper  (0) 2020.07.07