Введение
Лаборатория Каналов предназначена для проверки вашего понимания каналов в Golang. Каналы используются для соединения конкурентных goroutine, позволяя передавать и получать значения между ними.
Каналы
В этой лаборатории вам нужно создать новый канал и отправить в него значение из новой goroutine. Затем вы получите значение из канала и выведете его на экран.
- Вы должны использовать синтаксис
make(chan val-type)для создания нового канала. - Канал должен быть типизирован значениями, которые он передает.
- Вы должны использовать синтаксис
channel <-для отправки значения в канал. - Вы должны использовать синтаксис
<-channelдля получения значения из канала. - Вы должны использовать новую goroutine для отправки значения в канал.
## Когда мы запускаем программу, сообщение "ping"
## успешно передается из одной goroutine в другую
## через наш канал.
$ go run channels.go
ping
## По умолчанию отправка и получение блокируются, пока
## и отправитель, и получатель не будут готовы. Эта
## особенность позволяет нам ожидать в конце нашей
## программы сообщения "ping" без использования других
## методов синхронизации.
Ниже представлен полный код:
// _Каналы_ - это трубы, которые соединяют конкурентные
// goroutine. Вы можете отправлять значения в каналы из
// одной goroutine и получать эти значения в другой
// goroutine.
package main
import "fmt"
func main() {
// Создайте новый канал с использованием `make(chan val-type)`.
// Каналы типизируются значениями, которые они передают.
messages := make(chan string)
// _Отправьте_ значение в канал с использованием
// синтаксиса `channel <-`. Здесь мы отправляем "ping"
// в канал `messages`, который мы создали выше, из
// новой goroutine.
go func() { messages <- "ping" }()
// Синтаксис `<-channel` _получает_ значение из канала.
// Здесь мы получим сообщение "ping", которое мы
// отправили выше, и выведем его на экран.
msg := <-messages
fmt.Println(msg)
}
Резюме
Лаборатория Каналов проверяет вашу способность использовать каналы в Golang для передачи и приема значений между конкурентными goroutine. Завершив эту лабораторию, вы лучше поймете, как работают каналы и как их можно использовать для повышения производительности ваших программ на Golang.