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

Потокобезопасный вывод уникальных элементов из массива с использованием карты

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

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

Необходимо изменить программу так, чтобы:

  • из среза nums выводились только неповторяющиеся числа;
  • для контроля уникальности использовалась карта;
  • решение корректно работало в многопоточной среде с горутинами.
package main

import (
    "log"
)

func main() {
    nums := []int{3, 3, 2, 1, 2, 1, 1, 2, 4}
    var uniqMap map[int]struct{}

    for _, num := range nums {
        go func() {
            if _, ok := uniqMap[num]; ok {
                return
            }
            uniqMap[num] = struct{}{}
            log.Println(num)
        }()
    }
}