Recherche…


Remarques

Une chose à noter - les types qui ont une valeur nulle non nulle comme les chaînes, les ints, les flottants, les bools et les structures ne peuvent pas être définis sur nil.

Valeurs de base zéro

Les variables dans Go sont toujours initialisées, que vous leur donniez une valeur de départ ou non. Chaque type, y compris les types personnalisés, a une valeur de zéro pour laquelle il est défini s'il n'y a pas de valeur.

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

Cela s'applique également aux cartes, aux tranches, aux canaux et aux types de fonctions. Ces types seront initialisés à zéro. Dans les tableaux, chaque élément est initialisé à la valeur zéro de son type respectif.

Plus de valeurs zéro complexes

Dans les tranches, la valeur zéro est une tranche vide.

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

Utilisez make pour créer une tranche remplie de valeurs, toutes les valeurs créées dans la tranche sont définies sur la valeur zéro du type de la tranche. Par exemple:

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

Dans cet exemple, myIntSlice est une tranche int contenant 5 éléments qui sont tous à 0 car c'est la valeur zéro pour le type int .

Vous pouvez également créer une tranche avec new , cela créera un pointeur sur une tranche.

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

Remarque: les pointeurs de tranche ne prennent pas en charge l'indexation, vous ne pouvez donc pas accéder aux valeurs à l'aide de myIntSlice[3] , mais plutôt (*myIntSlice)[3] .

Struct Zero Values

Lors de la création d'une structure sans l'initialiser, chaque champ de la structure est initialisé à sa valeur zéro respective.

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"
}

Valeurs de tableau zéro

Comme pour le blog Go :

Les tableaux n'ont pas besoin d'être initialisés explicitement; la valeur zéro d'un tableau est un tableau prêt à l'emploi dont les éléments sont eux-mêmes mis à zéro

Par exemple, myIntArray est initialisé avec la valeur zéro de int , qui est 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow