דילוג לתוכן המרכזי
מודול 1 · שיעור 5 מתוך 55/50 בקורס~10 min
שיעורי מודול (5/5)

קלט/פלט עם fmt

חבילת fmt של הספרייה הרגילה היא הכלי העיקרי שלך להדפסה המסוף, עיצוב מחרוזות וקריאת קלט. אם השתמשת printf ב-C תרגישו ממש בבית, אבל עם קצת עידון נוסף הודות לפעלים %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מספר שלם בבסיס 1042
%fלצוף3.140000
%.2fלצוף עם 2 עשרונים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

אתה תשתמש בו כל הזמן כדי לבנות הודעות, יומנים ושגיאות.

Errorf: מחרוזות + גלישת שגיאה

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טוען...

הדפס את המחרוזת 'ciao mondo' באמצעות fmt.Println.

טוען עורך...
הצג רמז

`fmt.Println` לוקח מחרוזת ומוסיף את השורה החדשה בעצמה.

הפתרון זמין לאחר 3 ניסיונות

פעילות גופנית#go.m1.l5.e2
ניסיונות: 0טוען...

השתמש ב-fmt.Printf כדי להדפיס 'eta=36' ואחריו שורה חדשה, באמצעות הפועל %d עבור המספר השלם.

טוען עורך...
הצג רמז

`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 אינו מוסיף שורה חדשה: כתוב אותה בעצמך במחרוזת הפורמט.