שיעורי מודול (1/5)
חתימה ופרמטרים
ב-Go, פונקציות מוכרזות עם func. תחביר החתימה שונה
מ-C/Java: הסוג הולך אחרי שם הפרמטר, מופרד ב-a
שטח. זו בחירה שנקראת טוב יותר בקול רם - במקום זאת "n of type int".
של "int n".
תחביר בסיסי
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}פונקציה ללא ערך החזרה פשוט משמיטה את סוג ההחזרה.
פרמטרים עוקבים מאותו סוג
אם מספר פרמטרים עוקבים חולקים את אותו סוג, אתה יכול להצהיר זה רק פעם אחת על האחרון. זה אידיומטי ותראה את זה בכל מקום:
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.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageמתפקד כערכים
הפונקציות הן ערכים ממדרגה ראשונה: אתה יכול להקצות אותם, להעביר אותם ו להחזיר אותם. נחפור לעומק בשיעור על סגירות.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main וinit: שני שמות מיוחדים
func main()היא נקודת הכניסה של החבילהmain. אין ויכוחים, אין ערכי החזרה.func init()נקרא אוטומטית בעת הפעלת החבילה (אפילו מרובות פעמים אם מספר קבצים מגדירים אחד). שימושי להתקנה; להשתמש בו במשורה.
נסה את זה
הגדר פונקציה sum(a, b int) int שמחזירה a+b, ואז קרא לה ב-main עם (3, 4).
הצג רמז
סוג משותף: `(a, b int)`. סוג ההחזרה עובר אחרי הסוגריים.
הפתרון זמין לאחר 3 ניסיונות
הגדר greet (מחרוזת שם) (ללא ערך החזרה) שמדפיס 'ciao <name>'.
הצג רמז
אין סוג החזרה אם הפונקציה לא מחזירה כלום.
הפתרון זמין לאחר 3 ניסיונות
לאן הולך סוג הפרמטר ב-Go?
func f(? ?) {}לְסַכֵּם
func name(param type, ...) returnType { ... }.- הקלד אחרי השם; פרמטרים עוקבים מאותו סוג ← מצהירים על כך רק פעם אחת.
- Uppercase initial = exported; אותיות קטנות = פרטי לחבילה.
- הפונקציות הן מהשורה הראשונה (ניתנות להקצאה, ניתנות לביצוע).
mainוinitהם שמות שמורים עם סמנטיקה מיוחדת.