मैंने भाषा पहले दिन जाना सीखना शुरू कर दिया था। जब मैंने कुछ मजेदार कोड लिखने की कोशिश की, तो मैं एक अजीब व्यवहार से फंस गया।जाने वाली भाषा में रिकर्सिव फ़ंक्शन
package main
import "fmt"
func recv(value int) {
if value < 0 {
return
}
fmt.Println(value)
go recv(value-1)
}
func main() {
recv(10)
}
जब मैं ऊपर कोड चलाने के लिए, केवल 10
छपा है। जब मैं recv
पर कॉल करने से पहले go
हटा देता हूं, 10
से 0
मुद्रित होते हैं। मेरा मानना है कि मैं यहां नियमित रूप से जाने का दुरुपयोग कर रहा हूं, लेकिन मुझे समझ में नहीं आ रहा है कि यह इस तरह से चलने के लिए क्यों शुरू हुआ।
सिग्नल चैनलों के लिए, जहां चैनल डेटा का प्रकार महत्वपूर्ण नहीं है, तो आप 'चैन स्ट्रक्चर {} 'का उपयोग कर सकते हैं। वांछित व्यवहार की अनुमति देते हुए, एक खाली संरचना में कोई स्मृति नहीं होती है। जबकि एक बूलियन एक बाइट लेता है। – jimt
हाँ, ईमानदार होने के लिए मैं इसे और अधिक जटिल बनाने के लिए एक बूल के लिए गया था। लेकिन हाँ, एक खाली संरचना तकनीकी रूप से बेहतर है। क्या आप इसे मेरे उत्तर में शामिल करना चाहते हैं या क्या मैं इसे स्वयं संपादित करूँगा? :) –
यह आपका उत्तर है, इसके लिए जाएं :) – jimt