Ответ
В Go нет понятия "потока" (thread) в традиционном смысле, как в других языках. Вместо этого используются горутины (goroutines), которые легковесны и управляются рантаймом Go.
Горутины не имеют собственного стейта в классическом понимании. Они выполняются в контексте планировщика Go, который распределяет их по потокам ОС (обычно 1 поток на ядро CPU).
Ключевые особенности:
- Горутины стартуют с 2КБ стека (может расти)
- Состояние определяется точкой выполнения кода и локальными переменными
- Не привязаны жестко к потоку ОС - планировщик может перемещать их между потоками
Пример:
func main() {
go func() { // горутина
fmt.Println("Выполняется в горутине")
}()
time.Sleep(time.Millisecond) // даем время на выполнение
}