שיעורי מודול (5/5)
קלט/פלט עם fmt
חבילת fmt של הספרייה הרגילה היא הכלי העיקרי שלך להדפסה
המסוף, עיצוב מחרוזות וקריאת קלט. אם השתמשת
printf ב-C תרגישו ממש בבית, אבל עם קצת עידון נוסף
הודות לפעלים %v ו%T.
Print, Println, Printf: שלוש פונקציות, שלוש התנהגויות
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 |
%.2f | לצוף עם 2 עשרונים | 3.14 |
%s | מחרוזת | Ada |
%q | מחרוזת "מצוטטת" (עם מרכאות ומנוסות) | "Ada\n" |
%t | bool | true |
%x | הקסדצימלי (אותיות קטנות) | 2a |
%b | בינארי | 101010 |
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) // float64Sprintf: בניית מחרוזות מבלי להדפיס אותן
אותו ממשק כמו Printf, אבל התוצאה מוחזרת אליך בתור
string:
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 אתה יכול לעטוף שגיאה קיימת כדי לשמר אותה
שרשרת (נסקור זאת לעומק במודול ממשקים):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}התור שלך
הדפס את המחרוזת 'ciao mondo' באמצעות fmt.Println.
הצג רמז
`fmt.Println` לוקח מחרוזת ומוסיף את השורה החדשה בעצמה.
הפתרון זמין לאחר 3 ניסיונות
השתמש ב-fmt.Printf כדי להדפיס 'eta=36' ואחריו שורה חדשה, באמצעות הפועל %d עבור המספר השלם.
הצג רמז
`Printf` אינו מוסיף שורה חדשה: עליך לכלול `\\n` במחרוזת הפורמט.
הפתרון זמין לאחר 3 ניסיונות
איזה פועל מדפיס את ה-TYPE הדינמי של ערך?
fmt.Printf("?\n", 3.14)לְסַכֵּם
Print/Println/Printfנבדלים ברווחים ובשורות חדשות.%vהוא התו הכללי שפועל על כל סוג;%+vמציג שמות שדות.%Tמדפיס את הסוג (שימושי לניפוי באגים מהיר).Sprintfבונה מחרוזות;Errorfבונה שגיאות עם גלישה (%w).Printfאינו מוסיף שורה חדשה: כתוב אותה בעצמך במחרוזת הפורמט.