Avatar ·

فك شريحة/مصفوفة إلى وسائط دالة في Go: هل هناك مقابل لعامل الانتشار (spread) من JS/Python؟

مرحباً بالجميع. أنا أكتب بلغة Go منذ فترة قصيرة، انتقلت من Python وJavaScript. كان من السهل جداً هناك تمرير مصفوفة أو قائمة إلى دالة تقبل عدة وسائط باستخدام العامل `*` (في Python) أو `...` (الانتشار في JS). على سبيل المثال، في Python كنت أستطيع فعل `my_func(*my_list)`. الآن في Go لدي دالة تقبل عدة وسائط نصية: ```go func printNames(name1, name2, name3 string) { fmt.Println(name1, name2, name3) } ``` ولدي شريحة من النصوص: ```go names := []string{"Alice", "Bob", "Charlie"} ``` كيف يمكنني تمرير عناصر هذه الشريحة إلى الدالة `printNames` كوسائط منفصلة؟ جربت ببساطة كتابة `printNames(names...)`، لكن المترجم يشتكي من أنني لا أستطيع استخدام شريحة مع `...` في دالة ذات معاملات ثابتة. جربت فك الحزمة بشكل صريح عبر `names[0], names[1], names[2]` وهذا يعمل، لكن إذا كان لدي 10 عناصر، يصبح الأمر كابوساً. أخبروني، هل هناك طريقة في Go لفك شريحة أو مصفوفة إلى وسائط منفصلة؟