-
Создание канала:
ch := make(chan int)
-
Отправка данных в канал:
ch <- 42
-
Получение данных из канала:
data := <-ch
-
Закрытие канала:
close(ch)
-
Проверка закрытия канала:
data, ok := <-ch if !ok { // channel is closed }
-
Использование оператора select для работы с несколькими каналами:
select { case data := <-ch1: // handle data from ch1 case data := <-ch2: // handle data from ch2 }
-
Использование горутин для одновременного выполнения функций:
go func() { // code to be executed concurrently }()
-
Ожидание завершения горутин с использованием sync.WaitGroup:
var wg sync.WaitGroup wg.Add(1) // increment the WaitGroup counter go func() { defer wg.Done() // decrement the WaitGroup counter when finished // code to be executed concurrently }() wg.Wait() // wait for all goroutines to finish
Эти примеры демонстрируют базовое использование каналов, горутин и управления параллелизмом в Go. Важно отметить, что в языке Go доступно множество более продвинутых методов и шаблонов.