كيفية تهيئة map في Go بشكل جميل وصحيح: make أم literal؟
مرحباً بالجميع! لقد بدأت للتو في تعلم Go وواجهت سوء فهم في سؤال يبدو بسيطاً. كيف يتم تهيئة map (قاموس) بشكل صحيح؟
أرى في الكود خيارات مختلفة، ولا أستطيع فهم أي منها يعتبر "صحيحاً" أو "جميلاً" من وجهة نظر مجتمع Go.
على سبيل المثال، يمكنني تعريف map هكذا:
var m map[string]int
ولكن إذا حاولت كتابة قيمة فيها مباشرة بعد التعريف:
m["key"] = 10 // panic: assignment to entry in nil map
سأحصل على panic! يبدو أن map تحتاج إلى تهيئة.
أعرف طريقتين للقيام بذلك:
1. عبر دالة make:
m := make(map[string]int)
m["key"] = 10
2. عبر literal (فارغ أو مع بيانات):
m := map[string]int{}
m["key"] = 10
// أو مباشرة
m2 := map[string]int{"key": 10}
يبدو أن كلاهما يعمل. لكن أيهما أفضل؟ هل هناك فرق في الأداء؟ متى يجب استخدام طريقة وأخرى؟ ولماذا