Avatar ·

ما هي أسهل طريقة لفرز مصفوفة من الهياكل حسب حقل عشوائي في 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