Menu
Coddy logo textTech

סיכום – מבני נתונים מותאמים אישית

חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 101 מתוך 109.

challenge icon

אתגר

קל

בוא ניצור מבנה נתונים מותאם אישית ופשוט כדי לסכם את מה שלמדנו על מבנים ב-Go.

באתגר הזה תיצור מבנה נתונים בסיסי מסוג Counter שיכול:

  1. לעקוב אחר ערך ספירה
  2. להגדיל את הספירה
  3. להקטין את הספירה
  4. לאפס את הספירה לאפס

השלם את הקוד על ידי מימוש המתודות החסרות של המבנה 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)
}

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Go אונליין