סיכום – מבני נתונים מותאמים אישית
חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 101 מתוך 109.
אתגר
קלבוא ניצור מבנה נתונים מותאם אישית ופשוט כדי לסכם את מה שלמדנו על מבנים ב-Go.
באתגר הזה תיצור מבנה נתונים בסיסי מסוג Counter שיכול:
- לעקוב אחר ערך ספירה
- להגדיל את הספירה
- להקטין את הספירה
- לאפס את הספירה לאפס
השלם את הקוד על ידי מימוש המתודות החסרות של המבנה Counter.
נסו בעצמכם
package main
import (
"fmt"
)
// Counter הוא מבנה נתונים פשוט של מונה
type Counter struct {
value int
name string
}
// NewCounter יוצר מונה חדש עם שם נתון
func NewCounter(name string) Counter {
return Counter{
value: 0,
name: name,
}
}
// Increment מגדיל את המונה ב-1
func (c *Counter) Increment() {
// הוסיפו קוד להגדלת ערך המונה
}
// Decrement מקטין את המונה ב-1 (אך לא מתחת ל-0)
func (c *Counter) Decrement() {
// הוסיפו קוד להקטנת ערך המונה
// ודאו שהערך אינו יורד מתחת ל-0
}
// Reset מחזיר את המונה ל-0
func (c *Counter) Reset() {
// הוסיפו קוד לאיפוס המונה ל-0
}
// Value מחזיר את הספירה הנוכחית
func (c Counter) Value() int {
// הוסיפו קוד להחזרת הערך הנוכחי
return 0 // החליפו את זה
}
// String מחזירה ייצוג טקסטואלי של המונה
func (c Counter) String() string {
return fmt.Sprintf("%s: %d", c.name, c.value)
}
func main() {
// צרו מונה חדש בשם "Visitors"
visitors := NewCounter("Visitors")
// הגדילו את המונה כמה פעמים
visitors.Increment()
visitors.Increment()
visitors.Increment()
// הדפיסו את הערך הנוכחי של המונה
fmt.Println(visitors)
fmt.Println("Current value:", visitors.Value())
// הקטינו את המונה
visitors.Decrement()
fmt.Println(visitors)
// אפסו את המונה
visitors.Reset()
fmt.Println(visitors)
// בדקו שהמונה לא יורד מתחת לאפס
visitors.Decrement()
fmt.Println(visitors)
}כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואה – חלק 1אופרטורי השוואה – חלק 2אופרטור AND לוגיאופרטור OR לוגיאופרטור NOT לוגייסודות קדימות אופרטוריםסיכום – ביצוע השוואות7זרימת בקרה: לולאות
הסבר על לולאת `for`לולאת `for` – בסיסיתלולאת `for` – תנאי בלבדמילת המפתח `break`מילת המפתח `continue`לולאות מקוננותסיכום – חזרה על פעולות10טיפוסים מורכבים: מערכים
מבוא למערכיםהכרזה על מערכיםאתחול מערכיםגישה לאיברי מערךאורך מערך באמצעות `len`מעבר על מערכיםמערכים רב-ממדיים13טיפוסים מורכבים: Structs
הגדרת טיפוסים מותאמים אישיתיצירת מופעי Structגישה לשדות של Structמצביעים ל-Structאתחול StructStruct מוטמעיםStruct אנונימייםסיכום – מבני נתונים מותאמים אישית2משתנים וסוגי נתונים בסיסיים
מהו משתנההסקת טיפוס באמצעות `:=`מספרים שלמים (int)מספרים בנקודה צפהערכים בוליאנייםמחרוזותערכי אפסקבועיםמוסכמות לשמותסיכום – משתנים וטיפוסים8פונקציות
הבנת פונקציותהצהרה על פונקציהקריאה לפונקציותפרמטרים של פונקציההחזרת ערך יחידהחזרת מספר ערכיםערכי החזרה בעלי שםיסודות תחום ההשפעה של פונקציהסיכום - יצירת קוד לשימוש חוזר3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור חילוקאופרטור מודולואופרטור השמהאופרטורי השמה מורחבתהגדלה והקטנהסיכום – חישובים6זרימת בקרה: תנאים
פקודת `if`מילת המפתח `else`מילת המפתח `else if`הסתרת משתנים בתוך `if`אתחול משתניםפקודת `switch``switch` עם ביטויים`switch` ללא ביטוימילת המפתח `fallthrough`סיכום - קבלת החלטותתרגלו בעצמכם: קומפיילר Go אונליין