"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل يعتمد ترتيب تكرار Go Map على ترتيب إدخال المفتاح؟

هل يعتمد ترتيب تكرار Go Map على ترتيب إدخال المفتاح؟

تم النشر بتاريخ 2025-01-14
تصفح:860

Does Go Map Iteration Order Depend on Key Insertion Order?

ترتيب التعيين في خرائط Go

مع الأخذ في الاعتبار رمز Go التالي:

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, 74.39967,
    }
    m["test"] = Vertex{
        12.0, 100,
    }
    fmt.Println(m["Bell Labs"])
    fmt.Println(m)
}

النتيجة:

{40.68433 74.39967}

map[Bell Labs:{40.68433 74.39967} test:{12 100}]

تعديل إعلان قمة الاختبار عن طريق تحريك "}" 4 مسافات لليمين، كما يلي:

m["test"] = Vertex{
    12.0, 100,
}

تغيير الإخراج إلى:

{40.68433 74.39967}

map[test:{12 100} Bell Labs:{40.68433 74.39967}]

شرح:

تعتمد خريطة "الترتيب" في Go على وظيفة التجزئة العشوائية المستخدمة لـ منع هجمات رفض الخدمة. وفقًا لمتتبع مشكلات Go (http://code.google.com/p/go/issues/detail?id=2630)، لا يتم ضمان ترتيب الخريطة وفقًا للمواصفات.

وفقًا للمواصفات ، الخريطة عبارة عن مجموعة غير مرتبة من العناصر ذات مفاتيح فريدة. قد يؤدي التنفيذ المستقبلي إلى تغيير ترتيب الخريطة دون تعديله في التعليمات البرمجية الخاصة بك. ولذلك، فإن الاعتماد على ترتيب معين للخريطة ليس ممارسة موصى بها في Go.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3