Sobes.tech
Middle — Senior
75

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

被问到的公司:

HyperRus
任务条件

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

  • из среза 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)
        }()
    }
}