إلحاق القيم بالمصفوفات داخل خريطة في Go
عند العمل مع الخرائط في Go، قد يكون التعامل مع المصفوفات داخل تلك الخرائط أمرًا صعبًا. توفر هذه المقالة حلاً لمشكلة إلحاق القيم بالمصفوفات المخزنة داخل الخريطة.
لفهم المشكلة، خذ بعين الاعتبار الكود التالي:
type Example struct {
Id []int
Name []string
}
var MyMap map[string]Example
هنا، MyMap عبارة عن خريطة تقوم بتعيين سلاسل لمثيلات بنية المثال. يحتوي هيكل المثال على معرف الصفائف والاسم. الهدف هو إلحاق قيم بهذه المصفوفات.
غالبًا ما تتضمن المحاولة الأولية للقيام بذلك أساليب استدعاء في بنية المثال وتمرير جهاز استقبال المؤشر للوصول إلى المصفوفات وتعديلها. ومع ذلك، فإن تعيين نتيجة Oferty.AppendExample(1, "SomeText") مباشرة إلى MyMap["key1"] لن يعمل لأن الخريطة تخزن نسخة من بنية المثال، وليس البنية نفسها.
الحل يكمن في تعديل الكود كالتالي:
package main
import "fmt"
type Example struct {
Id []int
Name []string
}
func (data *Example) AppendOffer(id int, name string) {
data.Id = append(data.Id, id)
data.Name = append(data.Name, name)
}
var MyMap map[string]*Example
func main() {
obj := &Example{[]int{}, []string{}}
obj.AppendOffer(1, "SomeText")
MyMap = make(map[string]*Example)
MyMap["key1"] = obj
fmt.Println(MyMap)
}
من خلال إنشاء مثيل لبنية المثال وتخزين مرجع له في الخريطة (باستخدام نوع المؤشر)، يمكننا تعديل المصفوفات مباشرة. تعمل طريقة AppendOffer على مؤشر لبنية المثال، مما يسمح لنا بإلحاق قيم بالمصفوفات.
يقوم هذا الحل بإلحاق القيم بشكل فعال بالمصفوفات داخل بنية المثال، المخزنة في MyMap. فهو يوفر طريقة واضحة وموجزة لإدارة المصفوفات داخل الخرائط في Go.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3