פונקציה חדשה
שיעור 3 מתוך 19 בקורס פונקציות ומצביעים ב-Golang של Coddy.
בשיעורים הקודמים למדנו שמשתנים הם אובייקטים או מקומות בזיכרון עם שם שמצביע למקום הזה.
ב-Go יש לנו פונקציה שיוצרת מקום ללא שם בזיכרון, ואנחנו עושים זאת בעזרת הפונקציה new(). התחביר הוא כדלקמן:
coddy := new(string)כאן יצרנו אובייקט בשם coddy ובסוג string, והפונקציה new() מחזירה מצביע לאובייקט (מקום) הזה.
אם נדפיס את השם, נקבל את כתובת הזיכרון של המקום הזה:
fmt.Println("Value:", coddy)התוצאה תהיה:
Value: 0xc000014070אנחנו יכולים להקצות מחדש ערך למצביע הזה כך:
coddy := new(string)
*coddy = "Learn To Code with coddy"
fmt.Println("Value:", *coddy)התוצאה תהיה:
Value: Learn To Code with coddyשימו לב שכאשר אנחנו יוצרים מצביעים באמצעות הפונקציה new(), ערך ברירת המחדל אינו nil. הוא תלוי בסוג, בדיוק כמו משתנים. אם הסוג הוא int, ערך ברירת המחדל הוא 0; עבור string, זו מחרוזת ריקה; ועבור boolean, זה false.
אתגר
קלכתבו תוכנית שקולטת קלט מהמשתמש ומבצעת את הפעולות הבאות:
- יוצרת מצביע מסוג int באמצעות הפונקציה new().
- מדפיסה את ערך ברירת המחדל של המצביע.
- משייכת למצביע את הערך שהמשתמש הזין.
- מדפיסה את ערך המצביע לאחר ההשמה.
נסו בעצמכם
package main
import (
"fmt"
)
func main() {
// קלטו ערך מהמשתמש. אל תשנו את זה!
var num int
fmt.Scanln(&num)
// צרו מצביע מסוג int באמצעות הפונקציה new().
// מדפיס את ערך ברירת המחדל של המצביע.
fmt.Println("Default value of the pointer:", ?)
// מקצה למצביע הזה את הערך שהמשתמש הזין
// מדפיס את ערך המצביע לאחר ההקצאה.
fmt.Println("Value of the pointer after assignment:", ?)
}
כל השיעורים ביחידה פונקציות ומצביעים ב-Golang
1מבוא
מבוא4בנייה מחדש של פונקציות מחרוזות ב-Go
מחרוזות ב-Golangפונקציית Joinפונקציית Containsפונקציית Indexאתגר סיכום #1תרגלו בעצמכם: קומפיילר Go אונליין