ما هي أسهل طريقة لفرز مصفوفة من الهياكل حسب حقل عشوائي في Go؟
مرحباً بالجميع! لقد بدأت للتو في تعلم Go وواجهت مشكلة في الفرز. لدي مصفوفة من الهياكل User:
type User struct {
Name string
Age int
Score float64
}
users := []User{
{"آنا", 25, 88.5},
{"بوريس", 30, 92.1},
{"فيكتور", 22, 85.0},
}
أحتاج إلى فرز هذه المصفوفة حسب حقول مختلفة بناءً على اختيار المستخدم: تارة حسب الاسم (أبجدياً)، وتارة حسب العمر، وتارة حسب الدرجات. أعلم أن هناك حزمة sort في Go، لكن لكل حقل يجب كتابة دالة منفصلة مع Less(i, j int) bool. هذا غير مريح جداً، خاصة إذا كان هناك العديد من الحقول.
على سبيل المثال، الفرز حسب العمر:
sort.Slice(users, func(i, j int) bool {
return users[i].Age < users[j].Age
})
ماذا لو كنت بحاجة إلى الفرز حسب الاسم؟ يجب كتابة دالة مجهولة جديدة. وماذا لو كان هناك 10 حقول؟ أو الفرز أولاً حسب العمر ثم حسب الاسم؟
في Pyt