Senior
Quyidagi kod bo‘laklaridan qaysi biri kanal bilan ishlashda xato yoki potentsial muammo bilan bog‘liq? Variant 1 package main func main() { ch := make(chan int) ch <- 1 } Variant 2 package main func main() { ch := make(chan int, 1) ch <- 1 } Variant 3 package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } Variant 4 package main func main() { ch := make(chan int) close(ch) <-ch } Variant 5 package main func main() { ch := make(chan int, 3) ch <- 4 }
sobes.tech AI
AIdan javob
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.