Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - هياكل البيانات المخصصة

جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 101 من 109.

challenge icon

التحدي

سهل

لنقم بإنشاء هيكل بيانات مخصص بسيط لمراجعة ما تعلمناه عن الـ structs في لغة Go.

في هذا التحدي، ستقوم بإنشاء هيكل بيانات Counter أساسي يمكنه:

  1. تتبع قيمة العداد
  2. زيادة العداد
  3. إنقاص العداد
  4. إعادة تعيين العداد إلى الصفر

أكمل الكود من خلال تنفيذ الأساليب (methods) المفقودة لهيكل 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)
}

جميع دروس Fundamentals