Go
Nul waarden
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]