Sobes.tech
Junior — Middle

Чӣ гуна бояд дуруст хондани маълумот аз канал бе буфер анҷом дода шавад?

sobes.tech AI

Ҷавоб аз AI

በGo ቋንቋ፣ ከቻናል ያልተሞላ ውስጥ ውሂብ ለመቀበል ያልተጠቃሚ እና የማይቆም እና የማይታወቅ እንቅስቃሴ ወይም ከውሂብ እንደሚገኙ መቆጣጠር ያስፈልጋል። ቻናሎች በመነሻ ሁኔታ ሊኖሩ ይችላሉ ከሆነ ወይም ያልተሞላ ሊሆኑ ይችላሉ፣ ነገር ግን ለማንበብ ያልተሞላ ቻናሎችን በአጠቃላይ ያጠቃልሉ እና በ <- አሰራር ይጠቀሙ።

ከዚህ የተነሳ ለማንበብ ከማይቆም ቻናል ውስጥ ምሳሌ:

ch := make(chan int) // ያልተሞላ ቻናል

// በተለያዩ ጎሮቲኖች ውስጥ መላክ
go func() {
    ch <- 42
}()

// መነሻ (መጠቀም እስከሚደርስ ድረስ ይጠብቃል)
value := <-ch
fmt.Println(value) // 42

እንዲቀርበው ያልተቻለ ቅድሚያ ለመከላከል፣ በ select እና default እንደ መሰረት ሊጠቀሙ ይችላሉ:

select {
case val := <-ch:
    fmt.Println("ተቀባ", val)
default:
    fmt.Println("መረጃ የለም")
}