Go
Valori zero
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]