"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تحقيق وظيفة فهم القائمة في Go؟

كيف يمكنني تحقيق وظيفة فهم القائمة في Go؟

تم النشر بتاريخ 2024-11-10
تصفح:630

How Can I Achieve List Comprehension Functionality in Go?

Go Equivalent for Python's List Comprehension

يوفر فهم القائمة في Python طريقة موجزة لإنشاء القوائم عن طريق تصفية العناصر وتحويلها. ومع ذلك، إذا كنت تنتقل إلى Go وتجد صعوبة في تكرار هذه الوظيفة، فإليك الحل:

حل أنيق باستخدام حزمة المرشح

لحسن الحظ، مجتمع Go قدمت حزمة التصفية، التي توفر وظائف مشابهة لفهم قائمة بايثون. على وجه التحديد، تأخذ وظيفة الاختيار شريحة ووظيفة تصفية، مما يؤدي إلى إرجاع شريحة جديدة تحتوي فقط على العناصر التي اجتازت عامل التصفية.

import "github.com/rogpeppe/go-internal/filter"

func Choose(slice []T, fn func(T) bool) []T

مثال:

// Get even numbers from a list
a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
expect := []int{2, 4, 6, 8}
result := filter.Choose(a, isEven)

المنهج البديل: للحلقات

على الرغم من أن حزمة المرشح توفر الراحة، فمن المهم ملاحظة أن استخدام حلقات for التقليدية لا يزال خيارًا قابلاً للتطبيق وفعالاً. توفر حلقات Go's for المرونة وفرص التحسين.

for i := range a {
    if someCondition {
        result = append(result, a[i])
    }
}

الاستنتاج

على الرغم من عدم وجود بنية فهم القائمة الأصلية في Go، فإن حزمة التصفية وحلقات for توفر حلولاً قوية لتصفية القوائم وتحويلها. بينما توفر حزمة المرشح بنية موجزة، تظل حلقات for بديلاً فعالاً وفعالاً. في النهاية، يعتمد اختيار النهج على المتطلبات المحددة لطلبك.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3