মূল কন্টেন্টে যান
মডিউল 1 · 5-এর পাঠ 5কোর্সে 5/50~10 min
মডিউল পাঠ (5/5)

fmt সহ ইনপুট/আউটপুট

স্ট্যান্ডার্ড লাইব্রেরির fmt প্যাকেজ হল প্রিন্ট করার জন্য আপনার প্রধান টুল কনসোল, ফরম্যাটিং স্ট্রিং এবং রিডিং ইনপুট। যদি ব্যবহার করে থাকেন printf সি-তে আপনি বাড়িতে ঠিক অনুভব করবেন, তবে কিছু অতিরিক্ত পরিমার্জন সহ ধন্যবাদ %v এবং %T ক্রিয়াপদের জন্য।

Print, Println, Printf: তিনটি ফাংশন, তিনটি আচরণ

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 কিন্তু স্ট্রাকটে ক্ষেত্র নাম সহ{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"
%tbooltrue
%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

Sprintf: প্রিন্ট না করে স্ট্রিং তৈরি করা

Printf এর মতো একই ইন্টারফেস, কিন্তু ফলাফলটি আপনাকে একটি হিসাবে ফেরত দেওয়া হবে string:

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

আপনি বার্তা, লগ এবং ত্রুটি তৈরি করতে এটি ক্রমাগত ব্যবহার করবেন।

ত্রুটি: স্ট্রিং + ত্রুটি মোড়ানো

fmt.Errorf একটি error তৈরি করে Printf-শৈলী বিন্যাস সহ। সঙ্গে বিশেষ ক্রিয়াপদ %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 ব্যবহার করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

`Printf` একটি নতুন লাইন যোগ করে না: আপনাকে `\\n` বিন্যাস স্ট্রিং-এ অন্তর্ভুক্ত করতে হবে।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

Quiz#go.m1.l5.e3
প্রস্তুত

কোন ক্রিয়া একটি মানের গতিশীল TYPE মুদ্রণ করে?

Go
fmt.Printf("?\n", 3.14)
উত্তরের বিকল্প

রিক্যাপ

  • Print/Println/Printf স্পেস এবং নতুন লাইনে পার্থক্য।
  • %v হল ওয়াইল্ডকার্ড যা যেকোনো ধরনের কাজ করে; %+v ক্ষেত্রের নাম দেখায়।
  • %T প্রকারটি প্রিন্ট করে (দ্রুত ডিবাগিংয়ের জন্য দরকারী)।
  • Sprintf স্ট্রিং তৈরি করে; Errorf মোড়ানোর সাথে ত্রুটি তৈরি করে (%w)।
  • Printf একটি নতুন লাইন যোগ করে না: ফর্ম্যাট স্ট্রিংয়ে এটি নিজেই লিখুন।