2013-10-02 4 views
8

लंबाई एन के एक चैनल को देखते हुए, मैं इसे केवल तब लिखना चाहता हूं जब यह पूर्ण न हो। अन्यथा मैं इस पैकेट को छोड़ दूंगा और अगली प्रक्रिया को संसाधित करूंगा।क्या आप ब्लॉक के बजाय लिखने पर गोलांग ड्रॉप पैकेट बना सकते हैं?

इस संभव है GOlang

उत्तर

18

में आप select उपयोग कर सकते हैं। उदाहरण:

package main 

func main() { 

    ch := make(chan int, 2) 

    for i := 0; i < 10; i++ { 
     select { 
     case ch <- i: 
      // process this packet 
      println(i) 
     default: 
      println("full") 
      // skip the packet and continue 
     } 
    } 
} 
0

तथ्य मुझे पता है के बाद थोड़ा है, लेकिन इस वास्तव में क्या सहायक पैकेज मैंने लिखा में OverflowingChannel प्रकार के आधार पर कार्यान्वित किया जाता है है। यह प्रभावी रूप से उपरोक्त चुनिंदा चाल का उपयोग करता है।

संबंधित मुद्दे