Найти тему

077 Канал как возвращаемое значение

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

Вот пример функции, которая возвращает канал:

Go Playground - The Go Programming Language

В этом примере мы определяем функцию generateNumbers(), которая возвращает канал типа <-chan int, предназначенный только для приема. Функция создает канал ch и запускает Goroutine, которая отправляет целые числа от 1 до 10 по каналу с помощью цикла for. После завершения отправки значений Goroutine закрывает канал.

В функции main() мы вызываем generateNumbers(), чтобы получить канал только для приема, который мы присваиваем ch. Затем мы используем цикл for для получения значений из канала, пока канал не будет закрыт. Каждое значение, полученное из канала, выводится на консоль.

Возвращая канал из функции, мы можем создать конвейер из Goroutine, которые могут передавать данные друг другу без блокировки, вызывающей Goroutine.