Назад к задачам
Junior — Senior
5

Определение максимального чётного числа с конкурентным доступом и обнаружение гонки данных

Компании, где спрашивали:

WildberriesWildberries
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В данном упражнении рассматривается программа, которая пытается вычислить наибольшее чётное число из диапазона от 1 до 1000, используя несколько горутин. Требуется выполнить несколько шагов:

  • Предсказать, какой результат будет выведен на экран.
  • Выявить ошибки в реализации (гонка данных, неверный итоговый результат и т.п.).
  • Предложить корректные изменения, устраняющие проблемы.
import "fmt"

func main() {
    var max int
            
    for i := 1000; i > 0; i-- {
        i := i
        go func () {
            if i%2 == 0 && i > max {
                max = i
            }
        }()
    }
    fmt.Printf("Maximum is %d",max)
}