मुख्य सामग्री पर जाएं
मॉड्यूल 1 · पाठ 5 का 5पाठ्यक्रम में 5/50~10 min
मॉड्यूल पाठ (5/5)

एफएमटी के साथ इनपुट/आउटपुट

मानक लाइब्रेरी का fmt पैकेज मुद्रण के लिए आपका मुख्य उपकरण है कंसोल, फ़ॉर्मेटिंग स्ट्रिंग्स और रीडिंग इनपुट। यदि आपने प्रयोग किया है printf C में आप बिल्कुल घर जैसा महसूस करेंगे, लेकिन कुछ अतिरिक्त परिशोधन के साथ %v और %T क्रियाओं के लिए धन्यवाद।

प्रिंट, प्रिंटएलएन, प्रिंटफ: तीन कार्य, तीन व्यवहार

Go
fmt.Print("ciao ", "mondo")    // "ciao mondo"  (niente newline finale)
fmt.Println("ciao", "mondo")   // "ciao mondo\n" (newline + spazi tra argomenti)
fmt.Printf("eta=%d\n", 36)     // "eta=36\n"    (format string esplicita)

वे क्रियाएं जिनका आप हर समय उपयोग करेंगे

क्रियायह क्या प्रिंट करता हैउदाहरण
%v"डिफ़ॉल्ट मान" - किसी भी प्रकार पर काम करता है{Ada 36}
%+vजैसे %v लेकिन structs में फ़ील्ड नामों के साथ{Name:Ada Age:36}
%#vमूल्य का "गो-सिंटैक्स" प्रतिनिधित्वmain.User{Name:"Ada", Age:36}
%Tमान का प्रकारfloat64
%dआधार 10 में पूर्णांक42
%fतैरना3.140000
%.2f2 दशमलव के साथ फ़्लोट करें3.14
%sस्ट्रिंगAda
%q"उद्धृत" स्ट्रिंग (उद्धरण और एस्केप के साथ)"Ada\n"
%tबूलtrue
%xहेक्साडेसिमल (लोअरकेस)2a
%bबाइनरी101010
Go
u := struct{ Name string; Age int }{"Ada", 36}
fmt.Printf("%v\n", u)   // {Ada 36}
fmt.Printf("%+v\n", u)  // {Name:Ada Age:36}
fmt.Printf("%T\n", 3.14) // float64

स्प्रिंटफ: स्ट्रिंग्स को बिना प्रिंट किए बनाना

Printf जैसा ही इंटरफ़ेस, लेकिन परिणाम आपको एक के रूप में लौटाया जाता है string:

Go
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anni

आप संदेश, लॉग और त्रुटियाँ बनाने के लिए इसका लगातार उपयोग करेंगे।

Errorf: स्ट्रिंग्स + एरर रैपिंग

fmt.Errorf Printf-शैली स्वरूपण के साथ एक error बनाता है। के साथ विशेष क्रिया %w आप किसी मौजूदा त्रुटि को संरक्षित करने के लिए रैप कर सकते हैं श्रृंखला (हम इसे इंटरफ़ेस मॉड्यूल में गहराई से कवर करेंगे):

Go
if _, err := os.Open("missing"); err != nil {
    return fmt.Errorf("apertura config: %w", err)
}

आपकी बारी

व्यायाम#go.m1.l5.e1
प्रयास: 0लोड हो रहा है...

fmt.Println का उपयोग करके स्ट्रिंग 'ciao mondo' प्रिंट करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

`fmt.Println` एक स्ट्रिंग लेता है और नई लाइन स्वयं जोड़ता है।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम#go.m1.l5.e2
प्रयास: 0लोड हो रहा है...

पूर्णांक के लिए %d क्रिया का उपयोग करके, 'eta=36' को प्रिंट करने के लिए fmt.Printf का उपयोग करें और उसके बाद एक नई पंक्ति का उपयोग करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

`प्रिंटफ` एक नई पंक्ति नहीं जोड़ता है: आपको प्रारूप स्ट्रिंग में `\\n` को शामिल करना होगा।

3 प्रयासों के बाद समाधान उपलब्ध है

Quiz#go.m1.l5.e3
तैयार

कौन सी क्रिया किसी मान के गतिशील प्रकार को प्रिंट करती है?

Go
fmt.Printf("?\n", 3.14)
उत्तर विकल्प

संक्षिप्त

  • Print/Println/Printf रिक्त स्थान और न्यूलाइन में भिन्न हैं।
  • %v वाइल्डकार्ड है जो किसी भी प्रकार पर काम करता है; %+v फ़ील्ड नाम दिखाता है।
  • %T प्रकार प्रिंट करता है (त्वरित डिबगिंग के लिए उपयोगी)।
  • Sprintf स्ट्रिंग बनाता है; Errorf रैपिंग (%w) के साथ त्रुटियां पैदा करता है।
  • Printf कोई नई पंक्ति नहीं जोड़ता: इसे प्रारूप स्ट्रिंग में स्वयं लिखें।