Senior
50
Ispričaj o uzorku Fan-In, čemu služi?
Компаније где су питане
sber tech
Одговор од АИ
sobes.tech АИ
Паттерн Fan-In в Go используется для объединения нескольких каналов в один. Это полезно, когда нужно собрать данные из разных источников (горутин) и обработать их в одном месте. По сути, несколько входящих каналов «сходятся» в один выходной канал.
Пример реализации Fan-In:
type Data struct { /* ... */ }
func fanIn(channels ...<-chan Data) <-chan Data {
out := make(chan Data)
var wg sync.WaitGroup
wg.Add(len(channels))
for _, ch := range channels {
go func(c <-chan Data) {
defer wg.Done()
for v := range c {
out <- v
}
}(ch)
}
go func() {
wg.Wait()
close(out)
}()
return out
}
Такой подход позволяет эффективно агрегировать данные из нескольких источников, упрощая обработку и синхронизацию.