Nulinės reikšmės ir blokai
Kas nutinka, jei kintamąjį deklaruoji, bet reikšmės nepriskiri? Daugelyje kalbų — šiukšlės atmintyje arba avarija. Go — pirmoji saugumo pergalė: kiekvienas tipas turi savo nulinę reikšmę, ir ji spausdinasi saugiai, be jokios klaidos.
package main
import "fmt"
func main() {
var count int
var done bool
var note string
fmt.Println("count:", count)
fmt.Println("done:", done)
fmt.Println("note:", note)
}
Rezultatas — jokios avarijos:
count: 0
done: false
note:
int→0,bool→false,string→""(tuščias tekstas).- Todėl
varbe reikšmės — visiškai legalus kodas: „deklaruoju dabar, užpildysiu vėliau".
Dar viena smulkmena — blokai. Kintamasis gyvena tik tame { } bloke, kuriame gimė: main viduje sukurtas kintamasis nematomas kitur. Kol kas turime vieną bloką, bet kitoje pamokoje, kai atsiras funkcijos, ši taisyklė taps svarbi.
Spąstai. Nepriskirta
stringreikšmė yra""— tuščias tekstas, ne „sugedęs" kintamasis. Atspausdinusnote:eilutė atrodo nutrūkusi, ir pradedantieji pagalvoja, kad kažkas neveikia. Veikia! Tiesiog tekstas nulinės reikšmės pavidalu yra nulinio ilgio. Patikrinti gali palyginimu:note == ""duodatrue.