31 lines
1.1 KiB
Go
31 lines
1.1 KiB
Go
// При использовании каналов в качестве параметров
|
|
// функции вы можете указать, предназначен ли канал
|
|
// только для отправки или получения значений. Эта
|
|
// возможность повышает безопасность программы.
|
|
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
// Функция `ping` принимает канал только для отправки
|
|
// значений. При попытке получения значений в этот канал
|
|
// в процессе компиляции возниканет ошибка.
|
|
func ping(pings chan<- string, msg string) {
|
|
pings <- msg
|
|
}
|
|
|
|
// Функция `pong` принимает один канал для приема
|
|
// (`pings`) и второй для отправки (`pongs`).
|
|
func pong(pings <-chan string, pongs chan<- string) {
|
|
msg := <-pings
|
|
pongs <- msg
|
|
}
|
|
|
|
func main() {
|
|
pings := make(chan string, 1)
|
|
pongs := make(chan string, 1)
|
|
ping(pings, "passed message")
|
|
pong(pings, pongs)
|
|
fmt.Println(<-pongs)
|
|
}
|