Avatar ·

خطأ إلغاء مرجع مؤشر فارغ في Go: الأسباب والإصلاح

مرحبًا بالجميع! أنا مبتدئ في Go وقد واجهت خطأ يحيرني. لدي هيكل User، وأحاول كتابة دالة تطبع اسم المستخدم. إليك الكود الخاص بي: ```go package main import "fmt" type User struct { Name string Age int } func printUserName(u *User) { fmt.Println("User name is:", u.Name) } func main() { var user *User // هنا أعلنت المؤشر فقط، لكنني لم أقم بتهيئته printUserName(user) } ``` عند تشغيل هذا الكود، أحصل على الخطأ: `panic: runtime error: invalid memory address or nil pointer dereference`. أفهم أن هذا مرتبط بأن المؤشر user يساوي nil، لكنني لا أفهم تمامًا كيفية إصلاحه. في لغات أخرى، مثل C++ أو Java، يمكنني ببساطة تمرير الكائن بالقيمة، وكان كل شيء سيعمل. وهنا، إذا قمت بتمرير مؤشر، يجب أن يشير إلى شيء حقيقي؟ من فضلكم، اشرحوا ما هو nil pointer dereference، ولماذا يحدث هذا.