Avatar ·

Was ist null/nil in Go und wie arbeitet man damit?

Hallo zusammen! Ich habe angefangen, Go zu lernen und bin auf das Konzept von nil gestoßen. In anderen Sprachen (z. B. Java oder JavaScript) gibt es null, das oft Fehler verursacht (NullPointerException). In Go wird, wie ich verstanden habe, nil verwendet, aber das Verhalten unterscheidet sich.

Hier ist, was ich ausprobiert habe:

package main\n\nimport "fmt"\n\nfunc main() {\n    var p *int\n    fmt.Println(p) // gibt nil aus\n    // fmt.Println(*p) // panic: runtime error: invalid memory address or nil pointer dereference\n    \n    var s []int\n    fmt.Println(s == nil) // true\n    fmt.Println(len(s))   // 0\n    // s[0] = 1 // panic\n    \n    var m map[string]int\n    fmt.Println(m == nil) // true\n    // m["key"] = 1 // panic\n}\n

Fragen:

  1. Warum ist nil