Menu
Coddy logo textTech

פונקציות שמחזירות שגיאות

חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 104 מתוך 109.

ב-Go, פונקציות מחזירות בדרך כלל error כערך ההחזרה האחרון שלהן כדי לציין אם משהו השתבש.

צרו פונקציה שמחזירה גם תוצאה וגם שגיאה:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

קרא לפונקציה וטפל בשגיאה:

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}

הפלט יהיה:

Error: cannot divide by zero
challenge icon

אתגר

מתחילים

באתגר הזה תתרגלו ליצור פונקציה שמחזירה שגיאה כאשר מתקבל קלט לא תקין.

עליכם להשלים את הפונקציה validateUsername, שבודקת אם שם משתמש תקין. שם משתמש תקין אם אורכו לפחות 3 תווים. אם שם המשתמש תקין, החזירו nil עבור השגיאה. אם הוא לא תקין, החזירו שגיאה עם הודעה מתאימה.

הקוד שקורא לפונקציה שלכם ומטפל בשגיאה כבר נכתב עבורכם.

הערה: האתגר הזה משתמש במשתנים מוגדרים מראש במקום בקלט מהמשתמש.

נסו בעצמכם

package main

import (
	"errors"
	"fmt"
)

func validateUsername(username string) error {
	// TODO: בדקו אם אורך שם המשתמש קטן מ-3 תווים
	// אם כן, החזירו שגיאה עם ההודעה "username too short"
	// אחרת, החזירו nil (ללא שגיאה)
	
	return nil
}

func main() {
	// בדיקה עם שם משתמש תקין
	validName := "bob123"
	err1 := validateUsername(validName)
	if err1 != nil {
		fmt.Printf("%s is invalid: %v\n", validName, err1)
	} else {
		fmt.Printf("%s is valid!\n", validName)
	}
	
	// בדיקה עם שם משתמש לא תקין
	invalidName := "ab"
	err2 := validateUsername(invalidName)
	if err2 != nil {
		fmt.Printf("%s is invalid: %v\n", invalidName, err2)
	} else {
		fmt.Printf("%s is valid!\n", invalidName)
	}
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Go אונליין