2009-11-12 28 views
5

यहाँ एक परीक्षण जाओ कार्यक्रम है:मुझे यहां अर्धविराम की आवश्यकता क्यों है?

package main 
import fmt "fmt" 
func main() { 
    ex := "moo cow\n"; 
    fmt.Print (ex) 
} 
अर्धविराम के साथ

, यह संकलित करता है। हालांकि, यदि अर्धविराम हटा दिया गया है, तो यह नहीं है:

 
string.go:5: syntax error near fmt 

कोई विचार?


अद्यतन (मार्च 2012): नए जाओ विज्ञप्ति (साथ और अर्धविराम के बिना) दोनों रूपों को संकलित करने में सक्षम हैं।

उत्तर

10

The Go Programming Language Specification से: मुझे लगता है कि (मैं यहाँ कुछ नहीं कर रहा हूँ) है कि भाव के साथ एक "=" कुछ भी कर रहे हैं

बयानों की एक सूची के

तत्वों अर्धविराम से अलग कर रहे हैं, हो सकता है जो लोप केवल पिछले बयान करता है, तो:

  • घोषणाओं की एक सूची के ")" समापन कोष्ठक के साथ समाप्त होता; या
  • एक समापन ब्रेस "}" के साथ समाप्त होता है जो अभिव्यक्ति का हिस्सा नहीं है।
+7

... सुंदर बदसूरत? – ZJR

+1

यह "समस्या" शायद चली गई। इसे http://golang.org/doc/play/ –

+0

पर आज़माएं, हाँ, यह इस बात की तरह लगता है कि यह पाठ को कैसे पार करता है। मैं शायद सभी सेमी-कोलों में खुद को डाल देना चाहता हूं। जब तक इसकी अनुमति नहीं है। इसे जानने के लिए पर्याप्त इस्तेमाल नहीं किया है। – steviesama

1

ठीक है, उत्तर तकनीकी रूप से यहां है: http://golang.org/doc/effective_go.html#semicolons, लेकिन यह बहुत स्पष्ट नहीं है। ऐसा लगता है कि आप कथन के अंत से अर्धविराम छोड़ सकते हैं, लेकिन अभिव्यक्ति नहीं। उन में: (या "=") (हालांकि + = ट्यूटोरियल में ठीक हो रहा है?)

+0

इसे पढ़ने के बाद, ऐसा लगता है कि आप उन्हें पास्कल में जिस तरीके से करते हैं, ब्लॉक में बयान अलग करने के लिए उनका उपयोग करते हैं। ब्लॉक के बाहर, आपको उनकी आवश्यकता नहीं है। – Nosredna

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