Senior
Төмөндө көрсөтүлгөн код бөлүктөрүнүн кайсы бири каналдар менен иштөөдө кате же потенциалдуу көйгөйдү камтыйт? 1-чи вариант package main func main() { ch := make(chan int) ch <- 1 } 2-чи вариант package main func main() { ch := make(chan int, 1) ch <- 1 } 3-чи вариант package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } 4-чи вариант package main func main() { ch := make(chan int) close(ch) <-ch } 5-чи вариант package main func main() { ch := make(chan int, 3) ch <- 4 }
sobes.tech AI
AIден жооп
Xato Variant 1-dədir:
package main
func main() {
ch := make(chan int)
ch <- 1
}
Burada, buffer olmayan kanal yaradılır ch := make(chan int). Bu kanala ch <- 1 göndərilməsi, kimsə kanaldan oxuyana qədər bloklanır. Bu kodda heç bir qəbul edən olmadığından, proqram həmişəlik dayanar (deadlock).
Variant 2 düzgündür, çünki kanal bufferlidir və ölçüsü 1-dir, və göndərmə buffer dolu olmadıqda bloklanmır.
Variant 3 də düzgündür: göndərmə və qəbul balanslıdır.
Variant 4 düzgündür: bağlanmış kanaldan oxumaq mümkündür, oxuma sıfır dəyərini qaytarır və bloklanmır.
Variant 5 düzgündür: buffer 3, bir dəyər göndərilir, buffer dolmamışdır.
Xülasə, problem yalnız Variant 1-dədir — buffer olmayan kanala göndərmə zamanı bloklama.