Avatar ·

كيفية الحصول على شريحة من المفاتيح من map في Go: دليل كامل

مرحبًا بالجميع! بدأت تعلم Go مؤخرًا وواجهت مشكلة تبدو بسيطة، لكنني لا أجد حلاً أنيقًا.

لدي map تحتوي على بيانات المستخدمين:

users := map[int]string{
    1: "Alice",
    2: "Bob",
    3: "Charlie",
    4: "Diana",
}

أحتاج إلى الحصول على قائمة بجميع معرفات المستخدمين (المفاتيح) على شكل شريحة []int. في Python كنت سأكتب ببساطة list(users.keys())، لكن في Go لا توجد هذه الدالة البسيطة.

حاولت القيام بذلك بهذه الطريقة:

var keys []int
for key := range users {
    keys = append(keys, key)
}

هذا يعمل، لكن يبدو لي أن هذا كثير من الكلام. هل هناك دالة مدمجة أو طريقة أكثر اصطلاحية؟ خاصة أنني قلق بشأن:

  • ترتيب المفاتيح — هل هو دائمًا عشوائي؟
  • ماذا عن map الكبيرة (ملايين الإدخالات)؟
  • هل يمكن فعل ذلك في سطر واحد؟

سأكون ممتنًا للأمثلة.