ملخص - القوائم الديناميكية
جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 83 من 109.
التحدي
متوسطلنمارس العمل مع الشرائح (slices) في Go من خلال إنشاء مدير بسيط لقائمة التسوق!
مهمتك هي تنفيذ عدة وظائف تتعامل مع قائمة التسوق:
addItems: إضافة عناصر جديدة إلى قائمة التسوقremoveItem: إزالة عنصر من القائمة حسب الفهرسfindExpensiveItems: العثور على العناصر التي تتجاوز أسعارها حداً معيناًcalculateTotalCost: حساب التكلفة الإجمالية لجميع العناصر
يتم تمثيل كل عنصر في قائمة التسوق بسلسلة نصية (الاسم) و float64 (السعر). توضح الوظيفة main جميع هذه العمليات وهي تعمل معاً.
جرّب بنفسك
package main
import "fmt"
// addItems تضيف عناصر جديدة وأسعارها إلى قائمة التسوق
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
// الكود الخاص بك هنا
return names, prices
}
// removeItem تقوم بإزالة عنصر عند الفهرس المحدد
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
// الكود الخاص بك هنا
return names, prices
}
// findExpensiveItems تعيد العناصر التي تتجاوز أسعارها الحد المعين
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
// الكود الخاص بك هنا
return nil
}
// calculateTotalCost تعيد مجموع كل الأسعار
func calculateTotalCost(prices []float64) float64 {
// الكود الخاص بك هنا
return 0
}
func main() {
// تهيئة قوائم تسوق فارغة
names := []string{}
prices := []float64{}
// إضافة العناصر الأولية
initialNames := []string{"Apples", "Milk", "Bread"}
initialPrices := []float64{2.99, 3.49, 2.29}
names, prices = addItems(names, prices, initialNames, initialPrices)
// طباعة قائمة التسوق الأولية
fmt.Println("Initial Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
// حساب وطباعة التكلفة الإجمالية
total := calculateTotalCost(prices)
fmt.Printf("\nTotal Cost: $%.2f\n", total)
// البحث عن العناصر الغالية وطباعتها
priceThreshold := 3.00
expensiveItems := findExpensiveItems(names, prices, priceThreshold)
fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
for _, item := range expensiveItems {
fmt.Println(item)
}
// إضافة عنصر جديد
names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
// إزالة عنصر
names, prices = removeItem(names, prices, 1)
fmt.Println("\nRemoved item at index 1")
// طباعة قائمة التسوق النهائية
fmt.Println("\nFinal Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
}جميع دروس Fundamentals
4معاملات المقارنة والمعاملات المنطقية
معاملات المقارنة - الجزء 1معاملات المقارنة - الجزء 2معامل AND المنطقيمعامل OR المنطقيمعامل NOT المنطقيأساسيات أولوية المعاملاتملخص - إجراء المقارنات7تدفق التحكم: الحلقات التكرارية
شرح حلقة `for`حلقة `for` - أساسياتحلقة `for` - بشرط فقطالكلمة المفتاحية `break`الكلمة المفتاحية `continue`الحلقات المتداخلةملخص - تكرار العمليات2المتغيرات وأنواع البيانات الأساسية
ما هو المتغير؟استنتاج النوع باستخدام `:=`الأعداد الصحيحة (int)أرقام الفاصلة العائمةالقيم المنطقية (Booleans)النصوص (Strings)القيم الصفريةالثوابتقواعد التسميةملخص - المتغيرات والأنواع5الإدخال والإخراج الأساسي
المخرجات المنسقةرموز التنسيقطباعة الأنواعالحصول على مدخلات المستخدم الأساسيةملخص - الإدخال والإخراج8الدوال
فهم الدوالالتصريح عن دالةاستدعاء الدوالمعاملات الدالةإرجاع قيمة واحدةإرجاع قيم متعددةقيم الإرجاع المسماةأساسيات نطاق الدالةملخص - إنشاء كود قابل لإعادة الاستخدام11الأنواع المركبة: الشرائح
مقدمة إلى الشرائحالتصريح عن القيم المباشرة للشرائحإنشاء الشرائح باستخدام `make`طول الشريحة مقابل سعتهاالوصول إلى عناصر الشريحةإضافة العناصراقتطاع الشرائح/المصفوفات الموجودةالتكرار عبر الشرائحنسخ الشرائحملخص - القوائم الديناميكية3المعاملات الأساسية
المعاملات الحسابيةمعامل القسمةمعامل باقي القسمةمعامل التعيينمعاملات التعيين المركبةالزيادة والنقصانملخص - الحسابات6تدفق التحكم: الجمل الشرطية
جملة `if`الكلمة المفتاحية `else`الكلمة المفتاحية `else if`تظليل المتغيرات في `if`تهيئة المتغيراتجملة `switch``switch` مع التعبيرات`switch` بدون تعبيرالكلمة المفتاحية `fallthrough`ملخص - اتخاذ القرارات