Знающие, объясните.
Представим следующий код:
func main() {
a := 1
go func() { println(a) }
// ...
}
То что тут потенциально может быть data race я понимаю, вопрос не об этом.
Функция main имеет свой стэк, в которой лежит переменная
a.
Затем запускается другая горутина и читает значение переменной
a и другой горутины (main).
Как это работает под капотом? Разве одна горутина имеет доступ к стэку другой горутины?