Zoeken…


Opmerkingen

Een ding om op te merken - typen met een nulwaarde die gelijk is aan nul, zoals strings, ints, floats, bools en structs, kunnen niet op nul worden ingesteld.

Basis nulwaarden

Variabelen in Go worden altijd geïnitialiseerd, of u ze nu een beginwaarde geeft of niet. Elk type, inclusief aangepaste typen, heeft een nulwaarde waarop ze zijn ingesteld als ze geen waarde hebben gekregen.

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

Dit geldt ook voor kaarten, segmenten, kanalen en functietypen. Deze typen worden geïnitialiseerd tot nul. In arrays wordt elk element geïnitialiseerd op de nulwaarde van het respectieve type.

Complexere nulwaarden

In plakjes is de nulwaarde een lege plak.

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

Gebruik make om een segment te maken dat is gevuld met waarden. Alle waarden die in het segment zijn gemaakt, worden ingesteld op de nulwaarde van het type segment. Bijvoorbeeld:

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

In dit voorbeeld is myIntSlice een int segment dat 5 elementen bevat die allemaal 0 zijn, omdat dat de nulwaarde is voor het type int .

U kunt ook een segment met new , hierdoor wordt een aanwijzer naar een segment gemaakt.

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

Opmerking: myIntSlice[3] ondersteunen geen indexering, dus u hebt geen toegang tot de waarden met myIntSlice[3] , maar in plaats daarvan moet u het doen zoals (*myIntSlice)[3] .

Structuur nulwaarden

Wanneer u een struct maakt zonder deze te initialiseren, wordt elk veld van de struct geïnitialiseerd naar zijn respectieve nulwaarde.

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

Volgens het Go-blog :

Arrays hoeven niet expliciet te worden geïnitialiseerd; de nulwaarde van een array is een kant-en-klare array waarvan de elementen zelf op nul staan

myIntArray wordt bijvoorbeeld geïnitialiseerd met de nulwaarde van int , wat 0 is:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow