פונקציות אנונימיות
שיעור 9 מתוך 19 בקורס פונקציות ומצביעים ב-Golang של Coddy.
מה שכבר למדנו הוא איך להגדיר פונקציה עם שם, וכשאנחנו צריכים לקרוא לה, אנחנו משתמשים בשם הזה. עם זאת, יש סוג נוסף של פונקציה ללא שם, ולסוג הזה אנחנו קוראים פונקציה אנונימית.
היא פועלת בדיוק כמו פונקציה פשוטה, אך יש כמה הבדלים באופן הפעולה שלה. הפונקציות האלה מאפשרות לנו להגדיר פעולות ישירות, בלי צורך להגדיר פונקציה במקום אחר.
בואו נראה דוגמה לאופן שבו מגדירים פונקציה אנונימית:
b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))כאן אנחנו מגדירים משתנה b ששומר פונקציה אנונימית שמבצעת חיסור. כשאנחנו קוראים לפונקציה, אנחנו פשוט משתמשים בשם המשתנה b(100, 50).
אפשר גם לקבל פונקציה אנונימית כתוצאה מפונקציה אחרת. לדוגמה:
func operation(a int) func(int) int {
if a == 1 {
return func(a int) int { return a + 10 }
} else {
return func(a int) int { return a * 10 }
}
}
func main() {
b := operation(1)
fmt.Println(b(14))
}כאן אנחנו מגדירים פונקציה רגילה בשם operation, והתוצאה (הערך המוחזר) תהיה פונקציה אנונימית <strong>func(int) int</strong> במקום ערך פשוט.
אנחנו משייכים את הערך המוחזר למשתנה b. מכיוון שאנחנו מעבירים 1 כפרמטר לפונקציה operation, הבלוק שיתבצע הוא זה:
return func(a int) int { return a + 10 }כעת, כשאנחנו קוראים לפונקציה האנונימית שלנו b, עלינו להעביר ערך של מספר שלם, למשל, 14.
התוצאה תהיה:
24זהו החישוב של a + 10, שבו אנחנו מעבירים את a, שערכו 14(<strong>b(14)</strong>).
אתגר
קלכתבו פונקציה אנונימית שמקבלת שלושה ארגומנטים שלמים.
אם הארגומנט הראשון גדול מהארגומנט האחרון , החזירו את הסכום של כל הארגומנטים. אם לא, החזירו את המכפלה של הארגומנטים הראשון והאחרון .
שמרו את תוצאת הפונקציה בתוך משתנה שנקרא result.
נסו בעצמכם
package main
import "fmt"
func main() {
// הגדירו את הפונקציה האנונימית והקצו אותה למשתנה בשם "result".
// הדפיסו את התוצאה. אל תשנו את זה!
fmt.Println("Result:", result(2, 3, 4))
fmt.Println("Result:", result(8, 3, 4))
}
כל השיעורים ביחידה פונקציות ומצביעים ב-Golang
1מבוא
מבוא4בנייה מחדש של פונקציות מחרוזות ב-Go
מחרוזות ב-Golangפונקציית Joinפונקציית Containsפונקציית Indexאתגר סיכום #13פונקציות
מבואפרמטרים של פונקציהפונקציה עם ערך מוחזרערך לעומת הפניההחזרת ערכים מרוביםפונקציות אנונימיותאתגר סיכום מס׳ 1אתגר סיכום מס׳ 2תרגלו בעצמכם: קומפיילר Go אונליין