GO_INTERVIEW_LIB Telegram 294
💬 Даны n каналов типа chan int. Напишите функцию на Go, которая объединит все данные из этих каналов в один и вернет его.

Для объединения данных из нескольких каналов типа chan int в один канал в Go, можно использовать функцию, которая итерируется по каждому каналу, читает данные и отправляет их в один общий канал.

Это можно реализовать с помощью select внутри горутины для асинхронного чтения из входных каналов. Вот простой пример функции:


package main

import (
"sync"
)

func mergeChannels(channels ...chan int) chan int {
var wg sync.WaitGroup
mergedChannel := make(chan int)

// Функция для чтения данных из канала и отправки их в объединенный канал.
output := func(c chan int) {
for n := range c {
mergedChannel <- n
}
wg.Done()
}

wg.Add(len(channels))
for _, c := range channels {
go output(c)
}

// Закрытие объединенного канала после того, как все данные из входных каналов будут обработаны.
go func() {
wg.Wait()
close(mergedChannel)
}()

return mergedChannel
}

func main() {
// Пример использования функции mergeChannels
c1 := make(chan int)
c2 := make(chan int)

// Запуск примера с фиктивным заполнением каналов
go func() {
for _, n := range []int{1, 2, 3} {
c1 <- n
}
close(c1)
}()
go func() {
for _, n := range []int{4, 5, 6} {
c2 <- n
}
close(c2)
}()

merged := mergeChannels(c1, c2)
for n := range merged {
println(n)
}
}


Этот код определяет функцию mergeChannels, которая принимает переменное количество каналов chan int и возвращает один канал chan int, в который сливаются все входящие данные. Он использует пакет sync для ожидания завершения всех операций передачи данных перед закрытием результирующего канала.
🔥18👍52



tgoop.com/go_interview_lib/294
Create:
Last Update:

💬 Даны n каналов типа chan int. Напишите функцию на Go, которая объединит все данные из этих каналов в один и вернет его.

Для объединения данных из нескольких каналов типа chan int в один канал в Go, можно использовать функцию, которая итерируется по каждому каналу, читает данные и отправляет их в один общий канал.

Это можно реализовать с помощью select внутри горутины для асинхронного чтения из входных каналов. Вот простой пример функции:


package main

import (
"sync"
)

func mergeChannels(channels ...chan int) chan int {
var wg sync.WaitGroup
mergedChannel := make(chan int)

// Функция для чтения данных из канала и отправки их в объединенный канал.
output := func(c chan int) {
for n := range c {
mergedChannel <- n
}
wg.Done()
}

wg.Add(len(channels))
for _, c := range channels {
go output(c)
}

// Закрытие объединенного канала после того, как все данные из входных каналов будут обработаны.
go func() {
wg.Wait()
close(mergedChannel)
}()

return mergedChannel
}

func main() {
// Пример использования функции mergeChannels
c1 := make(chan int)
c2 := make(chan int)

// Запуск примера с фиктивным заполнением каналов
go func() {
for _, n := range []int{1, 2, 3} {
c1 <- n
}
close(c1)
}()
go func() {
for _, n := range []int{4, 5, 6} {
c2 <- n
}
close(c2)
}()

merged := mergeChannels(c1, c2)
for n := range merged {
println(n)
}
}


Этот код определяет функцию mergeChannels, которая принимает переменное количество каналов chan int и возвращает один канал chan int, в который сливаются все входящие данные. Он использует пакет sync для ожидания завершения всех операций передачи данных перед закрытием результирующего канала.

BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/294

View MORE
Open in Telegram


Telegram News

Date: |

The Standard Channel Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021. Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.” So far, more than a dozen different members have contributed to the group, posting voice notes of themselves screaming, yelling, groaning, and wailing in various pitches and rhythms. How to create a business channel on Telegram? (Tutorial)
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American