Go
June 16, 2022

Типичная ошибка с goroutines

Часто на собеседованиях предлагают объяснить и поправить вот такой код:

for _, val := range values {
  go func() {
    fmt.Println(val)
  }()
}

Правильный ответ:

// assume the type of each value is string
for _, val := range values {
  go func(val string) {
    fmt.Println(val)
  }(val)
}

Кто догадался молодец! А кто не догадался - рекомендую почитать эту статью, там освещается работа runtime scheduler.

https://habr.com/ru/company/badoo/blog/468863/