Mengapa Ralat Kebuntuan Tidak Dikembalikan dalam Kod ini?
Kod yang disediakan mengimport pakej net/http, yang memulakan Goroutine yang berprestasi undian latar belakang. Ini secara tidak sengaja melumpuhkan pengesan jalan buntu, menghalang ralat jalan buntu yang dijangkakan daripada dikembalikan.
Untuk memahami tingkah laku ini, pertimbangkan petikan kod:
<code class="go">package main import ( "fmt" "net/http" ) func main() { var ch = make(chan int) ch <- 1 }</code>
Dalam kes ini, fungsi utama mencipta saluran dan menghantar nilai ke dalamnya, yang berpotensi menyebabkan kebuntuan. Walau bagaimanapun, memandangkan pakej net/http telah diimport, pengesan jalan buntu dinyahdayakan dan tiada ralat dikembalikan.
Jika import dialih keluar:
<code class="go">package main import "fmt" func main() { var ch = make(chan int) ch <- 1 }</code>
Ralat jalan buntu kini betul. dikembalikan kerana tinjauan latar belakang Goroutines tidak aktif.
Tingkah laku ini konsisten dengan perbincangan dalam isu GitHub: https://github.com/golang/go/issues/12734, di mana dijelaskan bahawa mengimport pakej net/http melumpuhkan pengesan jalan buntu.
Atas ialah kandungan terperinci Mengapa Pengesanan Kebuntuan Dilumpuhkan Apabila Mengimport Pakej Net/Http?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!