Sobes.tech
Middle+

Čo je kanál v Go? Na čo sa používajú kanály?

sobes.tech AI

Odpoveď od AI

V jazyku Go je kanál (channel) mechanizmus na prenos dát medzi gorutinami (ľahkými vláknami). Kanály zabezpečujú bezpečnú a synchronizovanú komunikáciu, umožňujúc gorutinám vymieňať si hodnoty bez použitia zdieľaných premenných a zámkov.

Kanály sa deklarujú s uvedením typu prenášaných dát, napríklad:

ch := make(chan int) // kanál na prenos celých čísel

Hlavné operácie s kanálmi:

  • Odoslanie hodnoty: ch <- value
  • Prijatie hodnoty: value := <-ch

Kanály sa používajú na:

  • Synchronizáciu gorútin
  • Prenos dát medzi gorutinami
  • Organizáciu pipelineov spracovania dát

Príklad:

package main

import (
	"fmt"
	"time"
)

func worker(ch chan int) {
	for val := range ch {
		fmt.Println("Prijaté:", val)
	}
}

func main() {
	ch := make(chan int)
	go worker(ch)

	for i := 0; i < 5; i++ {
		ch <- i
	}
	close(ch) // zatvárame kanál, aby worker skončil
	time.Sleep(time.Second)
}

V tomto príklade sa kanál používa na prenos čísel od hlavnej gorutiny k workeru, ktorý ich vypisuje.