نظرة عامة على المشروع
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 45 من 68.
التحدي
سهلأنت على وشك بناء فاحص مخزون بسيط سيساعدك في إدارة مستويات توفر المنتجات.
قم بإعداد الأساس لنظام إدارة المخزون الخاص بك عن طريق إنشاء هياكل البيانات الأساسية وعرض بيانات المخزون الأولية. يحدد هذا التحدي هيكل Product وخريطة المخزون التي سيتم استخدامها طوال المشروع.
ستتلقى مدخلين:
- سلسلة نصية تحتوي على معلومات المتجر بتنسيق
"store_name,location"(على سبيل المثال،"TechStore,Downtown") - سلسلة نصية تحتوي على بيانات المنتج الأولية بتنسيق
"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"(على سبيل المثال،"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
مهمتك هي:
- إنشاء هيكل
Productبحقلين:Price(float64) - سعر المنتجQuantity(int) - كمية المخزون الحالية
- تحليل المدخل الأول عن طريق التقسيم عند الفواصل للحصول على اسم المتجر والموقع
- تحليل المدخل الثاني عن طريق التقسيم عند الفواصل للحصول على إدخالات المنتجات الفردية
- لكل إدخال منتج، قم بالتقسيم عند النقطتين الرأسيتين للحصول على اسم المنتج، والسعر، والكمية
- تحويل سلسلة السعر النصية إلى float64 وسلسلة الكمية النصية إلى int
- إنشاء خريطة تسمى
inventoryحيث المفاتيح هي أسماء المنتجات (سلاسل نصية) والقيم هي هياكلProduct - ملء خريطة المخزون ببيانات المنتج التي تم تحليلها
- عرض معلومات المتجر:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- عرض المخزون الحالي بترتيب أبجدي حسب اسم المنتج:
"Current Inventory:"- لكل منتج:
"- [product_name]: $[price] (Stock: [quantity])"
- حساب وعرض إحصائيات المخزون:
"Inventory Statistics:""Total Products: [total_number_of_products]""Total Items in Stock: [sum_of_all_quantities]""Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
- عرض حالة النظام:
"System Status: Ready""Inventory management system initialized successfully"
استخدم حزمة strings لتقسيم السلاسل النصية المدخلة، وحزمة strconv لتحويل السلاسل النصية إلى أرقام، وحزمة fmt للمخرجات المنسقة، وحزمة sort لفرز أسماء المنتجات أبجدياً. قم بتنسيق القيمة الإجمالية للمخزون إلى منزلتين عشريتين. يضع هذا التحدي هياكل البيانات الأساسية التي سيتم توسيعها في الدروس اللاحقة لمشروع إدارة المخزون.
جرّب بنفسك
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: قم بتعريف هيكل Product هنا
func main() {
// قراءة المدخلات باستخدام bufio.Scanner للتعامل مع المسافات بشكل صحيح
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: اكتب الكود الخاص بك أدناه
// 1. تحليل معلومات المتجر (التقسيم بواسطة الفاصلة، والتحقق من الطول)
// 2. تحليل بيانات المنتج (التقسيم بواسطة الفاصلة، ثم بواسطة النقطتين لكل منتج)
// 3. إنشاء خريطة المخزون
// 4. تحويل السلاسل النصية إلى الأنواع المناسبة وملء المخزون
// 5. عرض معلومات المتجر
// 6. عرض المخزون الحالي (مرتب أبجدياً)
// 7. حساب وعرض إحصائيات المخزون
// 8. عرض حالة النظام
}جميع دروس Logic & Flow
1تدفق التحكم المتقدم
جملة Switch مع `fallthrough`الخروج من الحلقات المتداخلةالاستمرار في حلقة محددةجملة `goto`ملخص - التحكم المتقدم في الحلقات2الـ Structs والميثودز (Methods)
تعريف الـ Methods على الـ Structsالـ Value Receiversالـ Pointer Receiversاختيار الـ Receiversالـ Methods مقابل الـ Functionsملخص - سلوك الـ Struct5تعمق في الـ Maps
Maps من نوع Structsالـ Pointers كقيم في الـ Mapsالتحقق من الـ Nil Mapsمقارنة الـ Mapsمراجعة - عداد تكرار الكلمات8مشروع: مخزون بسيط
نظرة عامة على المشروعالتحقق من المخزون3الواجهات (الأساسيات)
ما هي الواجهة؟تعريف الواجهةتطبيق الواجهةاستخدام أنواع الواجهاتالواجهة الفارغةتأكيدات النوع (Type Assertions)تبديل النوع (Type Switch)ملخص - الأشكال والسلوكيات