2013-02-04 13 views
56

जाने में, अगर हम कुछ प्रिंट करना चाहते हैं, हम तो इस प्रकार कर सकते हैं:क्या बार में fmt.Println() और println() के बीच का अंतर

import "fmt" 
func main(){ 
    fmt.Println("Hello world!") 
} 

लेकिन मैंने पाया कि एक कर सकते हैं

func main(){ 
    println("Hello world!") 
} 

कोई समझाने कृपया सकते हैं: fmt आयात किए बिना ही?

उत्तर

40

println एक इनबिल्ट फ़ंक्शन (रनटाइम में) है जो दूर जा सकता है, जबकि fmt पैकेज मानक लाइब्रेरी में है, जो जारी रहेगा। उस विषय पर the spec देखें।

भाषा डेवलपर्स के लिए यह निर्भरता के बिना एक println पाना उपयोगी होता है, लेकिन जाने का रास्ता fmt पैकेज या कुछ इसी तरह (उदाहरण के लिए log) का प्रयोग है।

जैसा कि आप see in the implementationprint(ln) फ़ंक्शंस को एक अलग आउटपुट मोड को दूरस्थ रूप से समर्थन देने के लिए डिज़ाइन नहीं किए गए हैं और मुख्य रूप से एक डीबग टूल हैं।

66

निमो के जवाब का निर्माण करने के लिए:

println भाषा में बनाया गया एक समारोह है। यह spec के बूटस्ट्रैपिंग खंड में है। लिंक से:

वर्तमान कार्यान्वयन बूटस्ट्रैपिंग के दौरान कई अंतर्निहित कार्यों को उपयोगी प्रदान करते हैं। इन कार्यों को पूर्णता के लिए दस्तावेज किया गया है लेकिन भाषा में रहने की गारंटी नहीं है। वे परिणाम नहीं लौटते हैं।

Function Behavior 

print  prints all arguments; formatting of arguments is implementation-specific 
println like print but prints spaces between arguments and a newline at the end 

इस प्रकार, वे डेवलपर्स के लिए उपयोगी होते हैं, क्योंकि वे निर्भरता (संकलक में बनाया जा रहा) की कमी है, लेकिन उत्पादन कोड में नहीं। यह भी ध्यान रखना महत्वपूर्ण है कि print और printlnstderr पर रिपोर्ट करें, stdout पर रिपोर्ट करें।

हालांकि, fmt द्वारा प्रदान किया गया परिवार, उत्पादन कोड में बनाया गया है। वे अनुमानित रूप से stdout पर रिपोर्ट करते हैं, जब तक अन्यथा निर्दिष्ट नहीं किया जाता है। वे अधिक बहुमुखी हैं (fmt.Fprint* किसी भी io.Writer, जैसे os.Stdout, os.Stderr, या यहां तक ​​कि net.Conn प्रकार) की रिपोर्ट कर सकते हैं। और कार्यान्वयन विशिष्ट नहीं हैं।

आउटपुट के लिए ज़िम्मेदार अधिकांश पैकेज fmt पर निर्भरता के रूप में log हैं। यदि आपका प्रोग्राम उत्पादन में कुछ भी आउटपुट करने जा रहा है, तो fmt सबसे अधिक संभावना है कि आप चाहते हैं कि पैकेज।

+4

यह उत्तर स्वीकार किया जाना चाहिए। – Asim

1

अंतर के लिए, this एक उदाहरण है।

println() फ़ंक्शन परीक्षण के पते पर एक सूचक बिंदु मुद्रित करता है।

fmt.Println() फ़ंक्शन के पते को प्रिंट करता है।

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