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

חתימה ופרמטרים

ב-Go, פונקציות מוכרזות עם func. תחביר החתימה שונה מ-C/Java: הסוג הולך אחרי שם הפרמטר, מופרד ב-a שטח. זו בחירה שנקראת טוב יותר בקול רם - במקום זאת "n of type int". של "int n".

תחביר בסיסי

Go
func sum(a int, b int) int {
    return a + b
}

func greet(name string) {
    fmt.Println("ciao", name)
}

פונקציה ללא ערך החזרה פשוט משמיטה את סוג ההחזרה.

פרמטרים עוקבים מאותו סוג

אם מספר פרמטרים עוקבים חולקים את אותו סוג, אתה יכול להצהיר זה רק פעם אחת על האחרון. זה אידיומטי ותראה את זה בכל מקום:

Go
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }

פונקציות מיוצאות לעומת לא מיוצאות

ב-Go, הנראות נקבעת לפי השם: מזהים שמתחילים עם אות גדולה מיוצאים (נראה מחבילות אחרות), the others are private to the package.

Go
func Sum(a, b int) int { ... }    // esportata
func helper() { ... }              // privata al package

מתפקד כערכים

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

Go
op := sum            // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5

main וinit: שני שמות מיוחדים

  • func main() היא נקודת הכניסה של החבילה main. אין ויכוחים, אין ערכי החזרה.
  • func init() נקרא אוטומטית בעת הפעלת החבילה (אפילו מרובות פעמים אם מספר קבצים מגדירים אחד). שימושי להתקנה; להשתמש בו במשורה.

נסה את זה

פעילות גופנית#go.m3.l1.e1
ניסיונות: 0טוען...

הגדר פונקציה sum(a, b int) int שמחזירה a+b, ואז קרא לה ב-main עם (3, 4).

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

סוג משותף: `(a, b int)`. סוג ההחזרה עובר אחרי הסוגריים.

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

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

הגדר greet (מחרוזת שם) (ללא ערך החזרה) שמדפיס 'ciao <name>'.

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

אין סוג החזרה אם הפונקציה לא מחזירה כלום.

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

Quiz#go.m3.l1.e3
מוכן

לאן הולך סוג הפרמטר ב-Go?

Go
func f(? ?) {}
אפשרויות תשובה

לְסַכֵּם

  • func name(param type, ...) returnType { ... }.
  • הקלד אחרי השם; פרמטרים עוקבים מאותו סוג ← מצהירים על כך רק פעם אחת.
  • Uppercase initial = exported; אותיות קטנות = פרטי לחבילה.
  • הפונקציות הן מהשורה הראשונה (ניתנות להקצאה, ניתנות לביצוע).
  • main וinit הם שמות שמורים עם סמנטיקה מיוחדת.