goroutine با کلیدواژه‌ی go شروع می‌شود. stack اولیه‌اش فقط چند کیلوبایت است و در صورت نیاز بزرگ می‌شود، برای همین می‌شود صدها هزار تا از آن‌ها داشت. scheduler زبان Go آن‌ها را روی تعداد کمتری thread سیستم‌عامل پخش می‌کند.

go func() {
	fmt.Println("runs concurrently")
}()

goroutine مقدار برنمی‌گرداند؛ برای ارتباط از channel یا حافظه‌ی مشترکِ محافظت‌شده با mutex استفاده کنید.