الأسماء المستعارة للحزم
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 54 من 68.
أحياناً تحتاج إلى إعطاء حزمة مستوردة اسماً مختلفاً داخل ملفك. يُسمى هذا تسمية مستعارة للحزمة (package aliasing)، وتجعل لغة Go ذلك بسيطاً بصيغة مباشرة.
لإنشاء اسم مستعار، قم بتحديد الاسم الجديد قبل مسار الحزمة في جملة الاستيراد الخاصة بك:
import f "fmt"الآن بدلاً من استخدام fmt.Println()، يمكنك استخدام النسخة الأقصر f.Println(). هذا مفيد بشكل خاص في حالتين: عندما يكون لديك أسماء حزم طويلة جداً وتريد تقصيرها، أو عندما تحتاج إلى تجنب تضارب الأسماء بين الحزم التي لها نفس الاسم.
package main
import f "fmt"
func main() {
f.Println("Hello with an alias!")
}تمنحك تسمية الحزم بأسماء مستعارة مرونة في كيفية الإشارة إلى الحزم المستوردة، مما يجعل الكود الخاص بك أكثر قابلية للقراءة ويساعدك على إدارة سيناريوهات الاستيراد المعقدة.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلقم بإنشاء برنامج يوضح استخدام الأسماء المستعارة للحزم (package aliasing) من خلال استيراد حزم متعددة بأسماء مستعارة مخصصة واستخدامها لإجراء عمليات متنوعة. سيختبر هذا التحدي قدرتك على إنشاء أسماء مستعارة ذات معنى للحزم واستخدامها باستمرار طوال برنامجك.
ستتلقى مدخلين:
- سلسلة نصية تحتوي على تعريفات الأسماء المستعارة للحزم بالتنسيق
"package1:alias1,package2:alias2,package3:alias3"(على سبيل المثال،"fmt:output,strings:text,strconv:convert") - سلسلة نصية تحتوي على العمليات المراد تنفيذها بالتنسيق
"operation1:data1|operation2:data2|operation3:data3"(على سبيل المثال،"print:Hello World|upper:go programming|parse:42")
مهمتك هي:
- تحليل المدخل الأول عن طريق التقسيم عند الفواصل للحصول على تعريفات الأسماء المستعارة الفردية للحزم
- لكل تعريف اسم مستعار، قم بالتقسيم عند النقطتين الرأسيتين للحصول على اسم الحزمة الأصلي واسمها المستعار
- استيراد الحزم باستخدام الأسماء المستعارة المحددة:
- استيراد
fmtبالاسم المستعار المقدم - استيراد
stringsبالاسم المستعار المقدم - استيراد
strconvبالاسم المستعار المقدم
- استيراد
- عرض معلومات إعداد الأسماء المستعارة:
"=== PACKAGE ALIAS DEMONSTRATION ===""Setting up package aliases:"- لكل اسم مستعار:
"- [original_package] aliased as '[alias]'"
- تحليل المدخل الثاني عن طريق التقسيم عند العلامة "|" للحصول على العمليات الفردية
- لكل عملية، قم بالتقسيم عند النقطتين الرأسيتين للحصول على نوع العملية والبيانات
- عرض ترويسة العمليات:
"Performing operations using aliases:" - لكل عملية، قم بتنفيذ الإجراء المقابل باستخدام الحزم ذات الأسماء المستعارة:
- لعمليات
"print": استخدم اسمfmtالمستعار لطباعة"[fmt_alias].Println: [data]" - لعمليات
"upper": استخدم اسمstringsالمستعار لتحويل البيانات إلى أحرف كبيرة وطباعة"[strings_alias].ToUpper: [uppercase_data]" - لعمليات
"lower": استخدم اسمstringsالمستعار لتحويل البيانات إلى أحرف صغيرة وطباعة"[strings_alias].ToLower: [lowercase_data]" - لعمليات
"parse": استخدم اسمstrconvالمستعار لتحليل البيانات كعدد صحيح وطباعة"[strconv_alias].Atoi: [parsed_number]" - لعمليات
"format": استخدم اسمfmtالمستعار لتنسيق وطباعة"[fmt_alias].Sprintf: Formatted -> [data]"
- لعمليات
- عدّ وعرض إحصائيات العمليات:
"Operation Summary:""Total operations performed: [total_operations]""Packages used: [comma_separated_list_of_aliases_used]"
- عرض فوائد استخدام الأسماء المستعارة:
"Benefits demonstrated:""- Shorter function calls using aliases""- Improved code readability""- Avoided potential naming conflicts"
- عرض رسالة الإكمال:
"Package aliasing demonstration completed successfully"
استخدم حزمة strings لتقسيم سلاسل الإدخال ومعالجة النصوص، وحزمة strconv لتحويل السلاسل النصية إلى أعداد صحيحة، وحزمة fmt للمخرجات المنسقة. تذكر استخدام الأسماء المستعارة باستمرار طوال برنامجك بدلاً من أسماء الحزم الأصلية. يوضح هذا التحدي كيف يمكن لأسماء الحزم المستعارة أن تجعل كودك أكثر إيجازاً وقابلية للقراءة مع تجنب تعارض الأسماء.
ورقة مرجعية
استخدم الاسم المستعار للحزمة (package aliasing) لإعطاء الحزم المستوردة أسماءً مختلفة داخل ملفك:
import f "fmt"الآن يمكنك استخدام f.Println() بدلاً من fmt.Println():
package main
import f "fmt"
func main() {
f.Println("Hello with an alias!")
}الاسم المستعار للحزمة مفيد لـ:
- تقصير أسماء الحزم الطويلة جداً
- تجنب تعارض الأسماء بين الحزم التي لها نفس الاسم
- جعل الكود أكثر قابلية للقراءة
جرّب بنفسك
package main
import (
"bufio"
f "fmt"
"os"
"sort"
c "strconv"
s "strings"
)
func main() {
// قراءة المدخلات باستخدام bufio.Scanner للتعامل مع المسافات بشكل صحيح
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
aliasInput := scanner.Text()
scanner.Scan()
operationsInput := scanner.Text()
// تحليل تعريفات الأسماء المستعارة (alias)
aliasDefinitions := s.Split(aliasInput, ",")
// تحليل العمليات
operations := s.Split(operationsInput, "|")
// TODO: اكتب الكود الخاص بك أدناه
// 1. قم بتحليل كل تعريف اسم مستعار للحصول على اسم الحزمة والاسم المستعار (تحقق من الأطوال)
// 2. عرض ترويسة عرض الاسم المستعار للحزمة ومعلومات الإعداد
// 3. معالجة كل عملية باستخدام الحزمة المستعارة المناسبة
// 4. عد العمليات وتتبع الأسماء المستعارة التي تم استخدامها (الحفاظ على الترتيب أو الفرز)
// 5. عرض ملخص العمليات والفوائد
// تذكر استخدام الأسماء المستعارة باستمرار طوال برنامجك
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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مراجعة - عداد تكرار الكلمات3الواجهات (الأساسيات)
ما هي الواجهة؟تعريف الواجهةتطبيق الواجهةاستخدام أنواع الواجهاتالواجهة الفارغةتأكيدات النوع (Type Assertions)تبديل النوع (Type Switch)ملخص - الأشكال والسلوكيات6أسلوب Go الاصطلاحي: المجموعات
أسلوب المجموعات في Goإنشاء مجموعةالإضافة إلى مجموعةالتحقق من العضوية في المجموعةالحذف من مجموعةالتكرار عبر عناصر المجموعةمراجعة - أسماء مستخدمين فريدة9الحزم والنطاق
ما هي الحزمة؟المصدرة مقابل غير المصدرةإنشاء حزمة بسيطةالأسماء المستعارة للحزمالمعرف الفارغ `_`دالة `init`ملخص - بناء أداة مساعدة