इस अध्याय में हम गोलैंग (Google Go) में नियंत्रण संरचनाओं का अध्ययन करेंगे। नियंत्रण संरचनाएँ किसी भी प्रोग्राम की लॉजिक को नियंत्रित करती हैं, जिससे आप अपने कोड को विभिन्न परिस्थितियों के अनुसार संचालित कर सकते हैं। इस अध्याय में आप If-Else स्टेटमेंट्स, Switch स्टेटमेंट, और Loops जैसी महत्वपूर्ण संरचनाओं के बारे में जानेंगे, जो आपके प्रोग्राम को अधिक शक्तिशाली और लचीला बनाएंगी। चाहे आप सरल निर्णय लेने की प्रक्रियाएँ लिख रहे हों या जटिल लूप्स बना रहे हों, यह अध्याय आपको नियंत्रण संरचनाओं को प्रभावी ढंग से उपयोग करने में मदद करेगा।
If-Else Statements
गोलैंग में If-Else स्टेटमेंट्स का उपयोग निर्णय लेने की प्रक्रिया में किया जाता है। यह एक सामान्य नियंत्रण संरचना है जो आपके प्रोग्राम को विभिन्न स्थितियों के आधार पर अलग-अलग क्रियाएँ करने की अनुमति देती है। If-Else स्टेटमेंट्स की मदद से आप प्रोग्राम के प्रवाह को नियंत्रित कर सकते हैं, जिससे आपके कोड की लॉजिक अधिक शक्तिशाली और गतिशील हो जाती है।
1. If स्टेटमेंट (If Statement):
if
स्टेटमेंट का उपयोग तब किया जाता है जब आपको किसी विशेष शर्त (condition) को चेक करना हो। यदि शर्त सही (true) होती है, तो संबंधित कोड ब्लॉक को एक्सीक्यूट किया जाता है।
package main import "fmt" func main() { var age int = 18 if age >= 18 { fmt.Println("You are eligible to vote.") } }
इस उदाहरण में, यदि age
18 या उससे अधिक है, तो “You are eligible to vote.” संदेश कंसोल पर प्रिंट होगा।
2. Else स्टेटमेंट (Else Statement):
else
स्टेटमेंट का उपयोग तब किया जाता है जब if
की शर्त गलत (false) हो जाती है। इस स्थिति में else
ब्लॉक का कोड एक्सीक्यूट होता है।
package main import "fmt" func main() { var age int = 16 if age >= 18 { fmt.Println("You are eligible to vote.") } else { fmt.Println("You are not eligible to vote.") } }
इस उदाहरण में, यदि age
18 से कम है, तो “You are not eligible to vote.” संदेश कंसोल पर प्रिंट होगा।
3. Else If स्टेटमेंट (Else If Statement):
else if
का उपयोग तब किया जाता है जब आपको एक से अधिक शर्तों की जाँच करनी हो। यह if
और else
के बीच आता है, जिससे आप कई स्थितियों के आधार पर निर्णय ले सकते हैं।
package main import "fmt" func main() { var marks int = 85 if marks >= 90 { fmt.Println("Grade: A+") } else if marks >= 75 { fmt.Println("Grade: A") } else if marks >= 60 { fmt.Println("Grade: B") } else { fmt.Println("Grade: C") } }
इस उदाहरण में, marks
की वैल्यू के आधार पर संबंधित ग्रेड कंसोल पर प्रिंट होगा।
4. नेस्टेड If-Else स्टेटमेंट्स (Nested If-Else Statements):
आप If-Else स्टेटमेंट्स को नेस्ट करके अधिक जटिल निर्णय लेने की प्रक्रियाएँ भी बना सकते हैं। इसका उपयोग तब किया जाता है जब एक शर्त के भीतर दूसरी शर्त की जाँच करनी हो।
package main import "fmt" func main() { var age int = 20 var hasID bool = true if age >= 18 { if hasID { fmt.Println("You are allowed entry.") } else { fmt.Println("You need an ID to enter.") } } else { fmt.Println("You are not allowed entry.") } }
इस उदाहरण में, यदि व्यक्ति की आयु 18 या उससे अधिक है और उसके पास ID है, तो उसे प्रवेश की अनुमति दी जाएगी। अन्यथा, प्रोग्राम उपयुक्त संदेश प्रदर्शित करेगा।
5. सिंपल If स्टेटमेंट (Simple If Statement):
कुछ स्थितियों में, आप बिना else
के भी if
स्टेटमेंट का उपयोग कर सकते हैं, जब आपको केवल एक शर्त की जाँच करनी हो और यदि वह शर्त पूरी नहीं होती तो कोई कार्रवाई न करनी हो।
package main import "fmt" func main() { var temperature int = 35 if temperature > 30 { fmt.Println("It's a hot day.") } }
इस उदाहरण में, यदि तापमान 30 डिग्री से अधिक है, तो “It’s a hot day.” संदेश प्रदर्शित होगा। यदि शर्त पूरी नहीं होती, तो कोई भी संदेश प्रदर्शित नहीं होगा।
If-Else स्टेटमेंट्स का सही उपयोग आपके प्रोग्राम को अधिक इंटरैक्टिव और स्मार्ट बनाता है। यह प्रोग्राम के विभिन्न संभावित रास्तों को नियंत्रित करने का एक महत्वपूर्ण उपकरण है, जिससे आप जटिल निर्णय लेने की प्रक्रियाओं को आसानी से लागू कर सकते हैं।
स्विच स्टेटमेंट (Switch Statement)
स्विच स्टेटमेंट गोलैंग में एक महत्वपूर्ण नियंत्रण संरचना है, जो आपके प्रोग्राम में एक ही वेरिएबल के विभिन्न संभावित वैल्यूज़ के आधार पर निर्णय लेने की प्रक्रिया को सरल और अधिक प्रभावी बनाती है। स्विच स्टेटमेंट का उपयोग तब किया जाता है जब आपको एक वेरिएबल की कई संभावित वैल्यूज़ की तुलना करनी हो, और प्रत्येक वैल्यू के लिए एक अलग कोड ब्लॉक को एक्सीक्यूट करना हो। यह कई if-else
स्टेटमेंट्स की तुलना में कोड को अधिक पढ़ने योग्य और मैनेज करने में आसान बनाता है।
1. स्विच स्टेटमेंट का सिंटैक्स (Syntax of Switch Statement):
स्विच स्टेटमेंट की संरचना गोलैंग में बहुत सरल और स्पष्ट होती है। यहाँ एक सामान्य उदाहरण दिया गया है:
package main import "fmt" func main() { day := "Tuesday" switch day { case "Monday": fmt.Println("Today is Monday.") case "Tuesday": fmt.Println("Today is Tuesday.") case "Wednesday": fmt.Println("Today is Wednesday.") default: fmt.Println("Not a weekday.") } }
इस उदाहरण में, day
वेरिएबल की वैल्यू के आधार पर संबंधित कोड ब्लॉक को एक्सीक्यूट किया जाएगा। यदि day
“Tuesday” है, तो “Today is Tuesday.” प्रिंट होगा। यदि किसी भी केस से मेल नहीं खाता, तो default
ब्लॉक चलाया जाएगा।
2. कई केस वैल्यूज़ (Multiple Case Values):
आप एक ही केस में कई वैल्यूज़ को भी चेक कर सकते हैं। यह तब उपयोगी होता है जब एक ही कोड ब्लॉक को कई वैल्यूज़ के लिए एक्सीक्यूट करना हो।
package main import "fmt" func main() { day := "Saturday" switch day { case "Saturday", "Sunday": fmt.Println("It's the weekend!") case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday": fmt.Println("It's a weekday.") default: fmt.Println("Invalid day.") } }
इस उदाहरण में, यदि day
की वैल्यू “Saturday” या “Sunday” है, तो “It’s the weekend!” प्रिंट होगा। अन्य दिनों के लिए “It’s a weekday.” प्रिंट होगा।
3. स्विच स्टेटमेंट में शॉर्ट स्टेटमेंट्स (Short Statements in Switch):
आप स्विच स्टेटमेंट में एक शॉर्ट स्टेटमेंट का उपयोग कर सकते हैं, जो स्विच स्टेटमेंट के लिए वैल्यू असाइन करने से पहले एक ऑपरेशन परफॉर्म करता है।
package main import "fmt" func main() { switch age := 20; { case age < 18: fmt.Println("You are a minor.") case age >= 18 && age <= 65: fmt.Println("You are an adult.") default: fmt.Println("You are a senior.") } }
इस उदाहरण में, age
वेरिएबल को switch
स्टेटमेंट के अंदर ही असाइन किया गया है, और फिर उसकी वैल्यू के आधार पर विभिन्न केस ब्लॉक एक्सीक्यूट किए गए हैं।
4. कोई एक्सप्रेशन नहीं (Switch Without an Expression):
गोलैंग में आप switch
स्टेटमेंट को बिना किसी एक्सप्रेशन के भी उपयोग कर सकते हैं। यह if-else
स्टेटमेंट्स की तरह काम करता है, लेकिन इसे अधिक पढ़ने योग्य और सरल बनाता है।
package main import "fmt" func main() { num := 7 switch { case num%2 == 0: fmt.Println("The number is even.") case num%2 != 0: fmt.Println("The number is odd.") } }
इस उदाहरण में, switch
स्टेटमेंट को num
वेरिएबल की विशिष्ट स्थितियों को चेक करने के लिए उपयोग किया गया है। यहाँ, यदि num
2 से विभाजित हो सकता है, तो “The number is even.” प्रिंट होगा; अन्यथा “The number is odd.” प्रिंट होगा।
5. स्विच में फॉलथ्रू (Fallthrough in Switch):
गोलैंग में, fallthrough
कीवर्ड का उपयोग करके आप स्विच के अगले केस में जा सकते हैं, भले ही मौजूदा केस की शर्त पूरी हो चुकी हो। यह अन्य प्रोग्रामिंग लैंग्वेज की तुलना में थोड़ा अलग व्यवहार है।
package main import "fmt" func main() { day := "Monday" switch day { case "Monday": fmt.Println("Today is Monday.") fallthrough case "Tuesday": fmt.Println("Today is Tuesday.") default: fmt.Println("Not a weekday.") } }
इस उदाहरण में, यदि day
“Monday” है, तो “Today is Monday.” के बाद fallthrough
के कारण “Today is Tuesday.” भी प्रिंट होगा, चाहे day
की वैल्यू “Tuesday” न हो।
स्विच स्टेटमेंट का उपयोग गोलैंग में निर्णय लेने की प्रक्रिया को आसान और प्रभावी बनाने के लिए किया जाता है। यह कोड को अधिक पढ़ने योग्य बनाता है और जटिल if-else
श्रृंखलाओं की तुलना में इसे मैनेज करना आसान होता है। स्विच स्टेटमेंट के सही उपयोग से आप अपने प्रोग्राम को अधिक शक्तिशाली और लचीला बना सकते हैं।
लूप्स (Loops)
लूप्स (Loops) गोलैंग में एक महत्वपूर्ण नियंत्रण संरचना हैं, जिनका उपयोग कोड को बार-बार एक्सीक्यूट करने के लिए किया जाता है। जब आपको किसी कार्य को एक निश्चित संख्या में या तब तक दोहराना हो जब तक कि कोई विशेष शर्त पूरी न हो जाए, तब लूप्स का उपयोग किया जाता है। गोलैंग में, लूप्स का उपयोग करना सरल और प्रभावी है, जिससे आप अपने कोड को अधिक कुशल और पुनरावृत्त बना सकते हैं।
1. फॉर लूप (For Loop):
गोलैंग में, for
लूप एकमात्र लूप संरचना है, और इसका उपयोग विभिन्न प्रकार की लूप्स बनाने के लिए किया जा सकता है। for
लूप में एक प्रारंभिक स्थिति (initialization), एक शर्त (condition), और एक इनक्रिमेंट/डिक्रिमेंट (increment/decrement) होता है।
package main import "fmt" func main() { for i := 1; i <= 5; i++ { fmt.Println("Iteration:", i) } }
इस उदाहरण में, for
लूप 1 से 5 तक की संख्या को प्रिंट करेगा। प्रत्येक इटरेशन के बाद i
की वैल्यू 1 से बढ़ेगी।
2. इनफिनिट लूप (Infinite Loop):
यदि आप for
लूप में शर्त को छोड़ देते हैं, तो यह एक इनफिनिट लूप बन जाएगा। इसका मतलब है कि यह लूप तब तक चलता रहेगा जब तक आप इसे मैन्युअली रोक नहीं देते।
package main import "fmt" func main() { i := 0 for { fmt.Println("Infinite Loop", i) i++ if i == 10 { break } } }
इस उदाहरण में, लूप अनंत बार चलेगा लेकिन if
शर्त और break
स्टेटमेंट के माध्यम से, यह 10 इटरेशन्स के बाद रुक जाएगा।
3. नेस्टेड फॉर लूप (Nested For Loops):
आप for
लूप के अंदर एक और for
लूप डालकर नेस्टेड लूप बना सकते हैं। यह तब उपयोगी होता है जब आपको मल्टी-लेवल लूपिंग की आवश्यकता हो, जैसे कि मैट्रिक्स या मल्टी-डायमेंशनल डेटा को प्रोसेस करना।
package main import "fmt" func main() { for i := 1; i <= 3; i++ { for j := 1; j <= 3; j++ { fmt.Printf("i = %d, j = %d\n", i, j) } } }
इस उदाहरण में, बाहरी लूप i
और आंतरिक लूप j
के लिए चलता है, जिससे कुल 9 कॉम्बिनेशन प्रिंट होते हैं।
4. रेंज के साथ फॉर लूप (For Loop with Range):
गोलैंग में range
का उपयोग for
लूप के साथ किया जा सकता है, जिससे आप किसी स्लाइस (slice), मैप (map), या चैनल (channel) के एलिमेंट्स पर लूप कर सकते हैं।
package main import "fmt" func main() { nums := []int{2, 4, 6, 8, 10} for index, value := range nums { fmt.Printf("Index: %d, Value: %d\n", index, value) } }
इस उदाहरण में, range
के साथ for
लूप का उपयोग करके स्लाइस के प्रत्येक एलिमेंट को इटरेट किया गया है, जिससे उसका इंडेक्स और वैल्यू प्रिंट होती है।
5. ब्रेक और कंटिन्यू (Break and Continue):
- ब्रेक (Break):
break
स्टेटमेंट का उपयोग लूप को तुरंत समाप्त करने के लिए किया जाता है, भले ही शर्त पूरी न हुई हो।package main import "fmt" func main() { for i := 1; i <= 10; i++ { if i == 5 { break } fmt.Println("i =", i) } }
इस उदाहरण में, लूप 5 पर पहुँचते ही समाप्त हो जाएगा।
- कंटिन्यू (Continue):
continue
स्टेटमेंट का उपयोग वर्तमान इटरेशन को छोड़कर लूप की अगली इटरेशन पर जाने के लिए किया जाता है।package main import "fmt" func main() { for i := 1; i <= 5; i++ { if i == 3 { continue } fmt.Println("i =", i) } }
इस उदाहरण में, लूप 3 पर पहुँचते ही उसे छोड़ देगा और 4 पर चला जाएगा। यानी 3 को छोड़कर अन्य सभी वैल्यूज़ प्रिंट होंगी।
6. लूप्स के साथ काउंटडाउन (Countdown with Loops):
लूप्स का उपयोग केवल आगे बढ़ने के लिए ही नहीं, बल्कि उल्टी गिनती (countdown) के लिए भी किया जा सकता है।
package main import "fmt" func main() { for i := 5; i > 0; i-- { fmt.Println("Countdown:", i) } fmt.Println("Liftoff!") }
इस उदाहरण में, for
लूप 5 से शुरू होकर 1 तक गिनती करेगा और फिर “Liftoff!” प्रिंट करेगा।
लूप्स का उपयोग आपके प्रोग्राम को अधिक लचीला और शक्तिशाली बनाता है। वे आपको एक ही कोड ब्लॉक को कई बार एक्सीक्यूट करने की अनुमति देते हैं, जिससे कोड को लिखने में समय की बचत होती है और उसे आसानी से मैनेज किया जा सकता है। गोलैंग में लूप्स के साथ प्रयोग करने से आप अपने प्रोग्रामिंग कौशल को अगले स्तर पर ले जा सकते हैं।