Эйч
Эйч
  • Все менторы
Задачи/Go-разработчик/Поиск ошибки в коде

Поиск ошибки в коде

Условие задачи

Необходимо внести исправления в код, который генерирует случайные числа от 0 до 9, выбирает среди них повторяющиеся значения, проверяет их на уникальность и отправляет уникальные числа в канал

go// select only unique values
func main() {
  var alreadyStored map[int]struct{}
  mu := sync.Mutex{}
  capacity := 1000

  doubles := make([]int, 0, capacity)
  for i := 0; i < capacity; i++ {
    doubles = append(doubles, rand.Intn(10)) // create rand num 0..9
  }
  // 3, 4, 5, 0, 4, 9, 9, 8, 6, 6, 5, 5, 4, 4, 2, 1, 2, 3, 1 ...

  uniqueIDs := make(chan int, capacity)
  wg := sync.WaitGroup{}

  for i := 0; i < capacity; i++ {
    i := i

    wg.Add(1)
    go func() {
      defer wg.Done()
      if _, ok := alreadyStored[doubles[i]]; !ok {
        mu.Lock()
        alreadyStored[doubles[i]] = struct{}{}
        mu.Unlock()

        uniqueIDs <- doubles[i]
      }
    }()
  }

  wg.Wait()
  for val := range uniqueIDs {
    fmt.Println(val)
  }

  fmt.Println(uniqueIDs)
}

Профессия

Go-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Профессии
Компания
С чем помогаемОтзывыВопросы и ответыСертификатыВебинарыСтать ментором

Платформа принадлежит ООО "Эйч Карьера"
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, город Москва, Старопименовский пер, д. 18 стр. 2, помещ./ком./этаж I/19/2

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта