goroutine با کلیدواژهی go شروع میشود. stack اولیهاش فقط چند کیلوبایت است و در صورت نیاز بزرگ میشود، برای همین میشود صدها هزار تا از آنها داشت. scheduler زبان Go آنها را روی تعداد کمتری thread سیستمعامل پخش میکند.
go func() {
fmt.Println("runs concurrently")
}()
goroutine مقدار برنمیگرداند؛ برای ارتباط از channel یا حافظهی مشترکِ محافظتشده با mutex استفاده کنید.