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]


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow