ما هو null/nil في Go وكيفية التعامل معه؟
مرحبًا بالجميع! بدأت تعلم Go وواجهت مفهوم nil. في لغات أخرى (مثل Java أو JavaScript) يوجد null الذي غالبًا ما يسبب أخطاء (NullPointerException). في Go، كما فهمت، يُستخدم nil لكن السلوك مختلف.
إليك ما جربته:
package main
import "fmt"
func main() {
var p *int
fmt.Println(p) // يطبع nil
// fmt.Println(*p) // panic: runtime error: invalid memory address or nil pointer dereference
var s []int
fmt.Println(s == nil) // true
fmt.Println(len(s)) // 0
// s[0] = 1 // panic
var m map[string]int
fmt.Println(m == nil) // true
// m["key"] = 1 // panic
}
الأسئلة:
- لماذا لا يؤدي
nilفي Go إلى إنشاء هياكل فارغة تلقائيًا (على عكسnullفي بعض لغات البرمجة)؟ - كيفية التحقق بشكل صحيح من
nilقبل استخدام المؤشرات، الـ