Struktūrinis programavimas
Pamoka 7 / 11 Masyvai ir įrašų slice ~40 min
3 / 4

Pertvarkyk main.go — programa laiko DAUG įrašų

Antrasis etapas. Meniu ciklo griaučiai lieka lygiai tie patys kaip 5–6 pamokose (for + Scanln + switch + default) — keičiasi tik tai, ką šakos daro:

  • var items []Item — vietoje vieno it dabar lentyna.
  • 1) Add — 6 pamokos šablonas pilnu gražumu: tekstas + skaičius su Atoi patikra, tada items = append(items, ...).
  • 2) List — nauja funkcija listItems: range + numeracija nuo 1; tuščia lentyna gauna „No items yet."
  • 3) Mark read — skaito numerį (vėl Atoi + ribų patikra n < 1 || n > len(items)), tada keičia items[n-1].Readper indeksą, kaip 2 žingsnyje.
  • printItem išėjo į pensiją — jo darbą perėmė listItems.

Patikrink2, pridėk Dune 412 ir Hobbit 310, 2, 3 + 2, 2, x, q:

> 2
No items yet.
> 1  (Dune, 412)
Added: Dune
> 1  (Hobbit, 310)
Added: Hobbit
> 2
 1. Book: Dune | pages: 0/412 | read: false
 2. Book: Hobbit | pages: 0/310 | read: false
> 3  (2)
Marked as read: Hobbit
> 2
 1. Book: Dune | pages: 0/412 | read: false
 2. Book: Hobbit | pages: 0/310 | read: true
> x
Unknown choice — try again.
> q
Bye!

Patarimas. Scanln skaito vieną žodį — „The Go Book" subyrės per tarpus. Kol kas pavadinimai vienažodžiai; tikras eilučių skaitymas (bufio.Scanner) ateina 10 pamokoje kartu su failais. O tavo 6 pamokos šakos (puslapiai, progresas) niekur nedingsta — savo programoje jas pritaikyk įrašui pagal numerį.