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