Der Nullwert Nil in Golang
nil
ist ein Nullwert in der Programmiersprache Go, ein bekannter und signifikanter vordefinierter Bezeichner. Es ist die wörtliche Darstellung mehrerer verschiedener Arten von Nullwerten.
Viele unerfahrene Go-Programmierer, die in anderen populären Sprachen gearbeitet haben, betrachten nil
möglicherweise als Äquivalent zu null
(oder NULL
) in anderen Sprachen. Dies ist teilweise richtig, aber es gibt mehrere Unterschiede zwischen nil
in Go und null
(oder NULL
) in anderen Sprachen.
Wir werden uns einige Beispiele ansehen, um zu sehen, was nil
in Golang bedeutet.
Überprüfen Sie die Größe von nil
mit verschiedenen Typen in Golang
Die Speicherlayouts aller Arten von Werten sind immer gleich. Die nil
-Werte des Typs sind keine Ausnahmen (nehmen Sie den Nullwert als nil
an).
Die Größe eines Null
-Werts ist immer dieselbe wie die Größe von Nicht-Null
-Werten mit demselben Typ wie der Null
-Wert. Null
-Werte verschiedener Typen können jedoch unterschiedliche Größen haben.
Code:
package main
import (
"fmt"
"unsafe"
)
func main() {
var p *struct{} = nil
fmt.Println(unsafe.Sizeof(p))
var s []int = nil
fmt.Println(unsafe.Sizeof(s))
var m map[int]bool = nil
fmt.Println(unsafe.Sizeof(m))
var c chan string = nil
fmt.Println(unsafe.Sizeof(c))
var f func() = nil
fmt.Println(unsafe.Sizeof(f))
var i interface{} = nil
fmt.Println(unsafe.Sizeof(i))
}
Ausgang:
8
24
8
8
8
16
Gibt nil
String in Golang zurück
Der Zeigervariablentyp, der auf einen Stringwert verweist, ist string
. Der Nullwert eines Zeigers ist nil
.
Code:
package main
import (
"fmt"
)
func main() {
var data *string = nil
if data == nil {
fmt.Println(data)
}
}
Ausgang:
<nil>
In diesem folgenden Beispiel prüfen wir, ob nil == nil
in Golang ist.
Code:
package main
import (
"fmt"
)
func main() {
var i *int = nil
var j *int = nil
if i == j {
fmt.Println("equal")
} else {
fmt.Println("no")
}
}
Ausgang:
equal