الدوال المتغيرة هي دوال تقبل عددًا غير محدود من الوسائط. عادة ، يتم التعبير عنها في النموذج
func hello(friends ...string) {
// ...
}
من السهل جدًا التعرف عليه من النقاط الثلاث...
.
يمكننا الاتصالhello()
مثله:
hello("tony", "mark", "mary", "joe")
أو:
hello("tony")
أو بعدد لا حصر له من السلاسل.
مثال من المكتبة القياسية:append()
append
هي دالة متغيرة ، تُعرّف على أنها
func append(slice []Type, elems ...Type) []Type
الاستخدام الشائع هو عند إزالة عنصر في الموضعi
من مجموعةa
.
a = append(a[:i], a[i+1:]...)
ينشئ هذا السطر شريحة جديدة عن طريق إزالة العنصر في الموضعi
فيa
، بدمج العناصر من 0 إلى i (غير مدرجة) ، ومن i + 1 حتى النهاية.
ما هو الغرض من...
؟
append
يقبل شريحة كوسيطة أولى ، وعدد غير محدود من الوسائط ، وكلها من النوعقابلة للتعيينلنوع عناصرها.
جاري الكتابة
a = append(a[:i], a[i+1:]...)
يعادل الكتابة
a = append(a[:i], a[i+1], a[i+2], a[i+3], a[i+4]) //and so on, until the end of the slice.
استخدامa[i+1:]...
هي في الأساس صيغة مختصرة ، كما توضح مواصفات Go فيhttps://golang.org/ref/spec#Passing_arguments_to_..._parameters:
إذا كانت f متغيرة مع معلمة نهائية p من النوع… T ، فإن النوع p ضمن f يكون مكافئًا للنوع [] T. إذا تم استدعاء f بدون وسيطات فعلية لـ p ، فإن القيمة التي تم تمريرها إلى p هي لا شيء. وإلا ، فإن القيمة التي تم تمريرها هي شريحة جديدة من النوع [] T مع مصفوفة أساسية جديدة تكون عناصرها المتتالية هي الوسيطات الفعلية ، والتي يجب تخصيصها جميعًا لـ T
المزيد من دروس Go:
- استخدام وكيل NGINX العكسي لخدمة خدمات Go
- عمل نسخة من هيكل في Go
- أساسيات Go Web Server
- فرز نوع الخريطة في Go
- الذهاب المؤشرات باختصار
- وأوضح Go Tags
- الذهاب تنسيق التاريخ والوقت
- معالجة JSON باستخدام Go
- وظائف متنوعة
- ورقة الغش Go Strings
- شرح واجهة Go Empty
- تصحيح الأخطاء الذهاب مع VS Code و Delve
- تقوم Named Go بإرجاع المعلمات
- توليد أرقام وسلاسل عشوائية في Go
- بنية نظام الملفات لمشروع Go
- تم تنفيذ خوارزمية البحث الثنائي في Go
- استخدام إشارات سطر الأوامر في Go
- أوضح جوباته
- أنشئ تطبيق Command Line باستخدام Go: lolcat
- إنشاء أمر CLI باستخدام Go: cowsay
- استخدام أنابيب شل مع Go
- Go CLI التعليمي: Fortune clone
- ضع قائمة بالملفات في مجلد باستخدام Go
- استخدم Go للحصول على قائمة بالمستودعات من GitHub
- اذهب ، قم بإلحاق شريحة من السلاسل بملف
- اذهب ، قم بتحويل سلسلة إلى شريحة بايت
- تصور مساهمات Git المحلية الخاصة بك مع Go
- الشروع في استخدام Go CPU وتوصيف الذاكرة
- حل الخطأ "لا يدعم الفهرسة" في برنامج Go
- قياس وقت التنفيذ في برنامج Go
- بناء زاحف الويب باستخدام Go لاكتشاف العناوين المكررة
- Go Best Practices: المؤشر أم مستقبلات القيمة؟
- Go Best Practices: هل يجب عليك استخدام طريقة أم دالة؟
- Go Data Structures: Set
- ورقة الغش في خرائط Go
- إنشاء تطبيقات لأنواع عامة في Go
- Go Data Structures: القاموس
- Go هياكل البيانات: Hash Table
- تنفيذ مستمعي الأحداث في الانتقال عبر القنوات
- Go Data Structures: Stack
- Go هياكل البيانات: قائمة الانتظار
- Go Data Structures: Binary Search Tree
- Go هياكل البيانات: رسم بياني
- Go Data Structures: قائمة مرتبطة
- الدليل الكامل إلى Go Data Structures
- مقارنة قيم Go
- هل Go موجه للكائن؟
- العمل مع قاعدة بيانات SQL في Go
- استخدام متغيرات البيئة في Go
- Go البرنامج التعليمي: REST API مدعوم من PostgreSQL
- تمكين CORS على خادم Go Web
- نشر تطبيق Go في حاوية Docker
- لماذا Go هي لغة قوية للتعلم كمطور PHP
- اذهب ، قم بإزالة io.Reader.ReadString حرف سطر جديد
- اذهب ، كيف تراقب التغييرات وتعيد بناء برنامجك
- اذهب وعد الأشهر منذ تاريخ
- الوصول إلى معلمات HTTP POST في Go