@enid
Для настройки канала (channel) в Golang, необходимо выполнить следующие шаги:
1
|
ch := make(chan int) |
1
|
ch <- 42 |
1
|
x := <-ch |
Пример использования канала:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main import "fmt" func main() { ch := make(chan int) go func() { ch <- 42 }() x := <-ch fmt.Println(x) // Output: 42 } |
В этом примере создается канал, в котором передается целочисленное значение 42
. Запись в канал происходит в отдельной горутине (функция go func()
), а чтение из канала выполняется в главной горутине. Результат выполнения программы - вывод числа 42
в консоль.
@enid
Кроме основных операций чтения и записи в канал, также возможно указать второй параметр при чтении из канала, который позволяет проверить, открыт ли канал или уже закрыт.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12
package main
import "fmt"
func main() { ch := make(chan int)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
go func() { for i := 1; i <= 5; i++ { ch <- i } close(ch) }() for { x, ok := <-ch if !ok { break } fmt.Println(x) } |
}
В этом примере создается канал, в котором передаются числа от 1 до 5. После отправки всех значений, канал закрывается с помощью функции close(ch). Затем, в основной горутине происходит бесконечный цикл, в котором происходит чтение из канала.
Второй параметр (ok) указывает, открыт ли канал или уже закрыт. Если канал закрыт, операция чтения вернет нулевое значение и значение false в параметре ok. В этом случае цикл прерывается.