كيفية الحصول على شريحة من المفاتيح من map في Go: حل بسيط وفعال
مرحبًا بالجميع! أنا مطور Go مبتدئ وواجهت مهمة تبدو بسيطة، لكنني لا أستطيع إيجاد حل أنيق.
لدي map، لنقل `map[string]int`، حيث المفاتيح هي أسماء المستخدمين والقيم هي أعمارهم. أحتاج إلى الحصول على قائمة بجميع المفاتيح (الأسماء) كشريحة `[]string`، على سبيل المثال، لتمريرها إلى دالة تطبع قائمة المستخدمين.
في Python كنت سأكتب ببساطة `list(my_dict.keys())`. في JavaScript — `Object.keys(myObj)`. أما في Go فأرى حاليًا فقط خيار التكرار اليدوي:
```go
users := map[string]int{
"Alice": 25,
"Bob": 30,
"Charlie": 22,
}
var keys []string
for k := range users {
keys = append(keys, k)
}
```
هذا يعمل، لكنه يبدو وكأنه حل بدائي مطول. أعتقد أنه لمثل هذه العملية المتكررة يجب أن تكون هناك دالة مدمجة في المكتبة القياسية لـ Go. بحثت في `reflect` و `maps` (Go 1.21+)، لكنني لم أجد إجابة واضحة.
الأسئلة:
1. هل التكرار اليدوي هو الحل الوحيد؟