Sobes.tech
Junior — Middle

Lze vytvořit kanál bez určení jeho velikosti při inicializaci?

sobes.tech AI

Odpověď od AI

Ano, v jazyce Go lze vytvořit kanál bez určení jeho velikosti — bude to nebufferovaný kanál. Takový kanál blokuje odesílatele, dokud příjemce nepřečte hodnotu, a naopak. Příklad vytvoření nebufferovaného kanálu:

ch := make(chan int) // nebufferovaný kanál

Pokud chcete vytvořit bufferovaný kanál s určitým rozměrem, zadáte druhý parametr:

ch := make(chan int, 10) // kanál s bufferem na 10 prvků

Tím je velikost kanálu ve výchozím nastavení rovna nule a funguje jako synchronizační mechanismus mezi gorutinami.