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.