Вот несколько методов и примеров, связанных с горутинами в Golang:
-
Создание горутины:
go func() { // Code to be executed concurrently }()В этом примере анонимная функция выполняется одновременно как горутина с использованием ключевого слова
go. -
Передача аргументов в горутины:
go func(msg string) { fmt.Println(msg) }("Hello, Goroutine!")Здесь горутина принимает сообщение в качестве аргумента и печатает его.
-
Синхронизация с группами ожидания:
var wg sync.WaitGroup func main() { wg.Add(1) go worker() wg.Wait() } func worker() { defer wg.Done() // Code for the worker goroutine }sync.WaitGroupиспользуется для синхронизации горутин. МетодAdd()добавляет количество горутин, которые нужно ожидать, а методWait()блокируется, пока все горутины не будут выполнены. МетодDone()вызывается, чтобы указать, что горутина завершила свое выполнение. -
Канал коммуникации:
func main() { ch := make(chan int) go func() { ch <- 42 // Sending data into the channel }() result := <-ch // Receiving data from the channel fmt.Println(result) }Каналы используются для связи и синхронизации между горутинами. В этом примере значение отправляется в канал с помощью оператора
<-, а затем оно принимается и печатается основной горутиной.