Горутины и каналы в GO
НАВИГАЦИЯ ПО СТРАНИЦЕ
Горутины (Goroutines) :
Горутины в GO представляют собой легковесные потоки выполнения, которые могут быть запущены параллельно с основным потоком программы. Они позволяют эффективно обрабатывать множество задач одновременно.
Запуск горутины:
Горутины запускаются с использованием ключевого слова go перед вызовом функции.
Пример:
func main() {
go myFunction()
// Основной код программы
}
func myFunction() {
// Код выполняемый в горутине
}
Каналы (Channels)
Каналы в GO представляют собой мощный механизм для обмена данными между горутинами. Они предоставляют безопасный и синхронизированный способ передачи информации.
Создание канала:
Канал создается с использованием встроенной функции make и оператора chan.
Пример:
myChannel := make(chan int)
Отправка и получение данных через канал:
// Отправка данных в канал
myChannel <- 42
// Получение данных из канала
value := <-myChannel
Закрытие канала:
Каналы можно закрывать для указания, что больше данных не будет передаваться. Закрытый канал не принимает новые данные, но по-прежнему можно читать оставшиеся значения.
Пример:
close(myChannel)
Выбор по каналам (Select):
Оператор select в GO позволяет выбирать из нескольких каналов, что делает его удобным для работы с множеством горутин и каналов.
select {
case msg1 := <-channel1:
fmt.Println("Received", msg1)
case msg2 := <-channel2:
fmt.Println("Received", msg2)
}
Использование горутин и каналов в GO обеспечивает простой и эффективный способ реализации параллельности и обмена данными между частями программы. Этот механизм делает GO удобным для разработки конкурентных программ с высокой производительностью.