Go
Nullwerte
Suche…
Bemerkungen
Eine Sache zu beachten - Typen, die einen Nullwert ungleich Null haben, wie Strings, Ints, Floats, Bools und Structs, können nicht auf Null gesetzt werden.
Grundlegende Nullwerte
Variablen in Go werden immer initialisiert, unabhängig davon, ob Sie ihnen einen Startwert geben oder nicht. Jeder Typ, einschließlich benutzerdefinierter Typen, hat einen Nullwert, auf den sie festgelegt werden, wenn kein Wert angegeben wird.
var myString string // "" - an empty string
var myInt int64 // 0 - applies to all types of int and uint
var myFloat float64 // 0.0 - applies to all types of float and complex
var myBool bool // false
var myPointer *string // nil
var myInter interface{} // nil
Dies gilt auch für Karten, Slices, Channels und Funktionstypen. Diese Typen werden mit Null initialisiert. In Arrays wird jedes Element mit dem Nullwert seines jeweiligen Typs initialisiert.
Komplexere Nullwerte
In Slices ist der Nullwert ein leeres Slice.
var myIntSlice []int // [] - an empty slice
Verwenden Sie make
, um ein mit Werten gefülltes Slice zu erstellen. Alle im Slice erstellten Werte werden auf den Wert Null des Slice-Typs gesetzt. Zum Beispiel:
myIntSlice := make([]int, 5) // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println(myIntSlice[3])
// Prints 0
In diesem Beispiel ist myIntSlice
ein int
myIntSlice
, das 5 Elemente enthält, die alle 0 sind, da dies der Nullwert für den Typ int
.
Sie können auch ein Slice mit new
erstellen. Dadurch wird ein Zeiger auf ein Slice erstellt.
myIntSlice := new([]int) // &[] - a pointer to an empty slice
*myIntSlice = make([]int, 5) // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println((*myIntSlice)[3])
// Prints 0
Hinweis: Scheibe Zeiger nicht Indizierung unterstützen , so dass Sie nicht die Werte zugreifen können myIntSlice[3]
, anstatt was Sie tun müssen , um es wie (*myIntSlice)[3]
.
Struktur Nullwerte
Wenn Sie eine Struktur erstellen, ohne sie zu initialisieren, wird jedes Feld der Struktur mit ihrem jeweiligen Nullwert initialisiert.
type ZeroStruct struct {
myString string
myInt int64
myBool bool
}
func main() {
var myZero = ZeroStruct{}
fmt.Printf("Zero values are: %q, %d, %t\n", myZero.myString, myZero.myInt, myZero.myBool)
// Prints "Zero values are: "", 0, false"
}
Array-Nullwerte
Wie im Go-Blog :
Arrays müssen nicht explizit initialisiert werden. Der Nullwert eines Arrays ist ein gebrauchsfertiges Array, dessen Elemente selbst auf Null gesetzt werden
Zum Beispiel wird myIntArray
mit dem Nullwert von int
initialisiert, der 0 ist:
var myIntArray [5]int // an array of five 0's: [0, 0, 0, 0, 0]