Go는 model of concurrency 로 fork-join model를 따른다. fork라는 단어는 parent와 concurrently 하게 동작하기 위해서 child branch를 split off 할 수 있음을 의미한다. join이라는 것은 미래의 한 시점에 parent로 다시 branch가 join된다는 것을 의미한다. sayHello := func { fmt.Println("hello") } go sayHello() //continue doing other things main function 의 나머지 부분들은 빠르게 실행될 것이고, sayHello 함수가 실행될지 안될지는 undetermined이다. join point를 만드는 것이 중요하다. 그래서 race condition일 뿐인..