Struktūrinis programavimas
Pamoka 4 / 11 Struktūros — vienas įrašas ~35 min
3 / 4 📖 Teorija

Literalai, taškas ir kopijos

Kelios struct smulkmenos, kurios greitai taps kasdienybe.

Literalų formos. Su laukų vardais (rekomenduojama — tvarka nesvarbi, praleisti laukai gauna nulines reikšmes) arba be vardų (visi laukai, tiksliai ta tvarka):

a := Item{Title: "Dune", Pages: 412}       // Read praleistas → false
b := Item{"Dune", 412, true}               // be vardų — visi ir iš eilės
var c Item                                  // nulinis struct: "", 0, false

Pastebėk: nulinės reikšmės veikia ir struct vidujevar c Item yra saugus, tuščias įrašas (2 pamokos taisyklė galioja kiekvienam laukui).

Keitimas per tašką. a.Pages = 500 — laukas pakeičiamas vietoje, kaip paprastas kintamasis.

Kopijos. Struct — reikšmė, todėl priskyrimas ir perdavimas į funkciją daro pilną kopiją:

a := Item{Title: "Dune", Pages: 412}
b := a          // b — pilna KOPIJA
b.Pages = 500
fmt.Println(a.Pages) // 412 — originalas nepasikeitė

Spąstai. Tai 3 pamokos kopijos spąstai, tik dabar — su visu įrašu: markRead(it Item) viduje pakeitęs it.Read = true pakeisi tik kopiją, originalas liks false. Kol kas sprendimas tas pats — funkcija grąžina pakeistą įrašą (it = markRead(it)). 11 pamokoje *Item rodyklė leis keisti originalą tiesiogiai — būtent todėl ji finaliniame projekte privaloma.