Struktūrinis programavimas
Pamoka 10 / 11 Failai ir klaidų valdymas ~45 min
3 / 4

Pertvarkyk main.go — duomenys išgyvena restartą

Trečiasis (ir paskutinis) etapas. Meniu griaučiai vėl lieka tie patys — keičiasi programos pradžia, pabaiga ir įvesties skaitymas:

  • Item laukai gauna JSON žymas (json:"title" ir t. t.).
  • Naujos funkcijos saveItems ir loadItems — lygiai tokios, kaip 2 žingsnyje: JSON per os.WriteFile / os.ReadFile, trūkstamas failas → tuščia lentyna.
  • Paleidus: items, err := loadItems() — jei įkelti nepavyko, pranešam ir startuojam su tuščiu sąrašu (bet nelūžtam).
  • Išeinant (q): saveItems(items) su klaidos patikra — tik tada „Saved. Bye!".
  • Premija: 7 pamokoje žadėtas tikras eilučių skaitymas — bufio.NewReader(os.Stdin) ir mažas helperis readLine. Visi Scanln išeina į pensiją, o „The Go Book" pagaliau telpa į pavadinimą su tarpais.

Patikrink — trys paleidimai iš eilės:

# 1 paleidimas (items.json dar nėra):
> 2
No items yet.        ← tuščia lentyna, o NE klaida
> q
Saved. Bye!

# 2 paleidimas — pridėk „The Go Book" 380 ir „Dune" 412, tada q.

# 3 paleidimas:
> 2
 1. Book: The Go Book | pages: 0/380 | read: false
 2. Book: Dune | pages: 0/412 | read: false

Duomenys išgyveno restartą — atsidaryk items.json ir pamatysi savo lentyną kaip tekstą.

Patarimas. Palygink savo main.go su finalinio projekto pavyzdžiu (11 pamoka): saveItems, loadItems, readLine — jau turi visus tris, tokius pačius. Finale jie tik persikels į atskirą storage.go failą.