دمج الخرائط في Golang
يعد الجمع بين خرائط متعددة في خريطة واحدة مدمجة في Golang مهمة شائعة. لنفترض أن لديك ثلاث خرائط:
الهدف هو دمج هذه الخرائط بناءً على مفتاح المعرف، مما يؤدي إلى:
دمج بسيط
لدمج الخرائط، عليك يمكن التكرار على كل خريطة إدخال وإلحاق القيم المرتبطة بكل مفتاح بشريحة في خريطة النتائج.func merge(ms ...map[string]string) map[string][]string {
res := map[string][]string{}
for _, m := range ms {
for k, v := range m {
res[k] = append(res[k], v)
}
}
return res
}
تجنب التكرارات
في بعض الحالات، قد ترغب في تجنب القيم المكررة في الخريطة المدمجة. لتحقيق ذلك، تحقق من التكرارات قبل الإلحاق.func merge(ms ...map[string]string) map[string][]string {
res := map[string][]string{}
for _, m := range ms {
srcMap:
for k, v := range m {
// Check if (k,v) was added before:
for _, v2 := range res[k] {
if v == v2 {
continue srcMap
}
}
res[k] = append(res[k], v)
}
}
return res
}
مثال للاستخدام
m1 := map[string]string{"id_1": "val_1"}
m2 := map[string]string{"id_2": "val_2", "id_1": "val_1"}
m3 := map[string]string{"id_1": "val_3"}
res := merge(m1, m2, m3)
fmt.Println(res)
الإخراج:خريطة[id_1:[val_1 val_3] id_2:[val_2]] تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3