Ricerca…


Osservazioni

Una cosa da notare - i tipi che hanno un valore zero non zero come stringhe, int, float, bool e structs non possono essere impostati su zero.

Valori zero di base

Le variabili in Go sono sempre inizializzate se gli dai un valore iniziale o no. Ogni tipo, inclusi i tipi personalizzati, ha un valore zero su cui sono impostati se non viene fornito un valore.

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

Questo vale anche per mappe, sezioni, canali e tipi di funzioni. Questi tipi verranno inizializzati a zero. Negli array, ogni elemento viene inizializzato sul valore zero del rispettivo tipo.

Più valori zero complessi

A fette il valore zero è una fetta vuota.

var myIntSlice []int    // [] - an empty slice

Utilizzare make per creare una slice popolata con valori, tutti i valori creati nella slice sono impostati sul valore zero del tipo della slice. Per esempio:

myIntSlice := make([]int, 5)    // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println(myIntSlice[3])
// Prints 0

In questo esempio, myIntSlice è una slice int che contiene 5 elementi che sono tutti 0 perché è il valore zero per il tipo int .

Puoi anche creare una sezione con una new , questo creerà un puntatore a una sezione.

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

Nota: i puntatori Slice non supportano l'indicizzazione, quindi non puoi accedere ai valori usando myIntSlice[3] , invece devi farlo come (*myIntSlice)[3] .

Struct Zero Values

Quando si crea una struct senza inizializzarla, ogni campo della struct viene inizializzato al rispettivo valore zero.

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 Zero Values

Come da blog Go :

Gli array non devono essere inizializzati in modo esplicito; il valore zero di un array è un array pronto all'uso i cui elementi sono a loro volta azzerati

Ad esempio, myIntArray viene inizializzato con il valore zero di int , che è 0:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow