Junior — Middle
Как се реализира обменът на съобщения между изпращача и получателя на данните в езика Go?
sobes.tech AI
Отговор от AI
В езика Go обменът на съобщения между изпращача и получателя на данни се реализира чрез канали (channels). Каналите позволяват на горутините (goroutines) безопасно да обменят данни, синхронизирайки изпълнението си.
Каналът се създава с помощта на функцията make и може да бъде с буфер или без:
ch := make(chan int) // канал без буфер
chBuf := make(chan int, 5) // канал с буфер с размер 5
Изпращане към канала:
ch <- 42 // изпрати стойност 42 към канала ch
Получаване от канала:
value := <-ch // получи стойността от канала ch
Пример за обмен на съобщения между две горутини:
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go func() {
ch <- "Здравей от горутината"
}()
msg := <-ch
fmt.Println(msg)
}
По този начин, каналите в Go осигуряват безопасна и удобна комуникация между паралелните изпълнителни потоци.