Struktūrinis programavimas
Pamoka 2 / 11 Kintamieji ir priskyrimas ~35 min
3 / 4 📖 Teorija

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:
  • int0, boolfalse, string"" (tuščias tekstas).
  • Todėl var be 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 string reikšmė yra ""tuščias tekstas, ne „sugedęs" kintamasis. Atspausdinus note: 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 == "" duoda true.