Struktūrinis programavimas
Pamoka 5 / 11 Sąlygos ir ciklai ~45 min
3 / 4

Pertvarkyk main.go — meniu ciklas (programa VEIKIA)

Didžioji akimirka: sujungiam for, switch ir įvestį — tavo programa pradeda veikti.

Naujos dalys:

  • for { ... } — amžinas ciklas: meniu rodomas tol, kol vartotojas išeina.
  • fmt.Scanln(&choice) — perskaito vartotojo įvestį į kintamąjį (kol kas užtenka; galingesnį skaitymą gausim 10 pamokoje).
  • case "q": ... return — išėjimo šaka: return išeina iš main, taigi programa baigiasi.
  • default: — bloga įvestis gauna žinutę, ciklas sukasi toliau. Programa nelūžta.
  • case "2": it.Read = true — veikia, nes it čia keičiamas tiesiogiai main viduje (ne per funkcijos kopiją!).

Patikrink — paleisk ir suvesk 1, 2, 1, x, q:

App: Book list

1) Show item  2) Mark read  q) Quit
> 1
Book: The Go Programming Language | pages: 380 | read: false

1) Show item  2) Mark read  q) Quit
> 2
Marked as read.

1) Show item  2) Mark read  q) Quit
> 1
Book: The Go Programming Language | pages: 380 | read: true

1) Show item  2) Mark read  q) Quit
> x
Unknown choice — try again.

1) Show item  2) Mark read  q) Quit
> q
Bye!

Pastebėk: po 2 įrašas pasikeitėread: true.

Spąstai. Du būdai gauti amžiną ciklą be išėjimo: pamiršti q šaką (arba return/break joje) — programa sukasi amžinai; arba „while" formoje pamiršti keisti sąlygos kintamąjį (for attempts < 5 be attempts++). Jei taip nutiko — Ctrl-C terminale nutraukia programą prievarta. Kiekvienas programuotojas tai patiria; svarbu žinoti išėjimą.