Sobes.tech
Junior — Middle

Létrehozható-e csatorna anélkül, hogy megadnánk a méretét az inicializálás során?

sobes.tech MI

Válasz az MI-től

Igen, Go-ban létrehozhatsz csatornát anélkül, hogy megadnád a méretét — ez egy nem pufferelt csatorna lesz. Egy ilyen csatorna blokkolja a küldőt, amíg a fogadó nem olvassa ki az értéket, és fordítva. Példa nem pufferelt csatorna létrehozására:

ch := make(chan int) // nem pufferelt csatorna

Ha pufferelt csatornát szeretnél létrehozni egy meghatározott mérettel, akkor a második paramétert adod meg:

ch := make(chan int, 10) // 10 elemű pufferrel rendelkező csatorna

Így a csatorna alapértelmezett mérete nulla, és szinkronizációs mechanizmusként működik a goroutine-ok között.