पहले कुछ पृष्ठभूमि। गो का औपचारिक व्याकरण ";"
कई प्रस्तुतियों में अर्धविरामों को टर्मिनेटर के रूप में उपयोग करता है , लेकिन गो कार्यक्रम उनमें से अधिकांश को छोड़ सकते हैं (और उनके पास एक स्पष्ट, आसानी से पढ़ने योग्य स्रोत होना चाहिए; gofmt
अनावश्यक अर्धविरामों को भी हटा देता है)।
विनिर्देश सटीक नियमों को सूचीबद्ध करता है। युक्ति: अर्धविराम:
औपचारिक व्याकरण अर्धविराम का उपयोग करता है ";" कई प्रस्तुतियों में टर्मिनेटर के रूप में। निम्नलिखित दो नियमों का उपयोग करके अधिकांश प्रोग्राम इन अर्धविरामों को छोड़ सकते हैं:
जब इनपुट टोकन में टूट जाता है, तो एक अर्धविराम स्वचालित रूप से टोकन स्ट्रीम में डाला जाता है, यदि एक पंक्ति के अंतिम टोकन के तुरंत बाद टोकन टोकन हो।
- एक पहचानकर्ता
- एक पूर्णांक , फ्लोटिंग-पॉइंट , काल्पनिक , रूण , या स्ट्रिंग शाब्दिक
- में से एक कीवर्ड
break
, continue
, fallthrough
, याreturn
- में से एक ऑपरेटरों और सीमांकक ,),], या} - ++,
एक एकल पंक्ति पर कब्जा करने के लिए जटिल बयानों की अनुमति देने के लिए, एक अर्धविराम को ")" या "}" को बंद करने से पहले छोड़ा जा सकता है।
तो जैसा कि आप देख सकते हैं कि क्या आप कोष्ठक के बाद एक नया वर्ण सम्मिलित करते हैं )
, एक अर्धविराम ;
स्वतः डाला जाएगा और इसलिए अगली पंक्ति को पिछली पंक्ति की निरंतरता के रूप में नहीं माना जाएगा। यह अपने मामले में क्या हुआ है, और इसलिए अगली पंक्ति के साथ शुरू .Scan(&ReadUser.ID,...
करने से इस खड़े के रूप में आप एक संकलन समय त्रुटि दे देंगे ही (पिछली पंक्ति के बिना) एक संकलन-समय त्रुटि है:syntax error: unexpected .
तो आप किसी भी बिंदु पर अपनी लाइन को तोड़ सकते हैं जो 1.
ऊपर दिए गए बिंदु के तहत सूचीबद्ध नियमों के साथ संघर्ष नहीं करता है।
आमतौर पर आप अल्पविराम ,
के बाद, कोष्ठक जैसे खोलने के बाद अपनी लाइनें तोड़ सकते हैं(
, [
, {
, और एक बिंदु के बाद .
जो एक क्षेत्र या कुछ मूल्य की विधि को संदर्भित किया जा सकता है। बाइनरी ऑपरेटर (जिन्हें 2 ऑपरेंड की आवश्यकता होती है) के बाद आप अपनी लाइन भी तोड़ सकते हैं, जैसे:
i := 1 +
2
fmt.Println(i) // Prints 3
यहां ध्यान देने योग्य एक बात यह है कि यदि आपके पास प्रारंभिक मूल्यों को सूचीबद्ध करने के लिए एक संरचना या टुकड़ा या नक्शा शाब्दिक है, और आप अंतिम मूल्य को सूचीबद्ध करने के बाद लाइन को तोड़ना चाहते हैं, तो आपको एक अनिवार्य अल्पविराम लगाना होगा ,
, हालांकि यह अंतिम मूल्य है और नहीं अधिक का पालन करेंगे, जैसे:
s := []int {
1, 2, 3,
4, 5, 6, // Note it ends with a comma
}
यह अर्धविराम नियमों के अनुरूप है, और यह भी कि आप अंतिम कॉमा को जोड़ने / हटाने की देखभाल के बिना नई लाइनों को पुनर्व्यवस्थित और जोड़ सकते हैं; उदाहरण के लिए, आप बस 2 पंक्तियों को हटाने के लिए और एक नया अल्पविराम जोड़ने के लिए स्वैप कर सकते हैं:
s := []int {
4, 5, 6,
1, 2, 3,
}
फ़ंक्शन कॉल पर तर्क सूचीबद्ध करते समय यही बात लागू होती है:
fmt.Println("first",
"second",
"third", // Note it ends with a comma
)