Section 5

5-dars — Stringlarni formatlash

Println argumentlari, Printf verb'lari (%v, %f, %.1f, %T, %%), izohlar, Sprintf va ko'p qatorli stringlar


Hozir natijalarimiz xunuk chiqyapti: 10319.6261... kabi uzun kasrlar. Bu darsda chiqishni chiroyli va tushunarli qilishni o'rganamiz.

1. Println ga bir nechta qiymat

Natijaga matn qo'shishning eng oson yo'li — Println ga vergul bilan bir nechta qiymat uzatish. U ularni bo'shliq bilan ajratib, bitta qatorda chiqaradi:

fmt.Println("Future Value:", futureValue)

Natija: Future Value: 1.7081444584506886e+06 — matn qo'shildi, lekin son hali ham xunuk. Buni Printf hal qiladi.


2. fmt.Printf va verb'lar

Printf (print formatted) — matn ichiga qiymatlarni maxsus belgilar orqali joylaydi. Bu belgilar verb (o'rinbosar) deyiladi:

VerbNima uchun
%vhar qanday qiymat (default ko'rinish)
%fkasrli son (float)
%.1fkasrli son, 1 ta kasr bilan
%dbutun son (int)
%sstring (matn)
%Tqiymatning tipi (int, float64...) — debug uchun foydali
%%foiz belgisining o'zi (%)
fmt.Printf("Future Value: %.1f\n", futureValue)
  • %.1ffutureValue shu yerga, 1 kasr bilan qo'yiladi
  • \n — yangi qatorga o'tish belgisi (Printf o'zi yangi qatorga o'tmaydi)

Natija: Future Value: 10319.6

%.2f → 2 kasr (10319.63), %.0f → kasrsiz (10320). Verb'lar soni qancha bo'lsa, undan keyin shuncha qiymat shu tartibda uzatiladi:

fmt.Printf("FV: %.1f\nReal FV: %.1f\n", futureValue, futureRealValue)

3. Izohlar (comments)

// bilan izoh yoziladi — Go uni e'tiborsiz qoldiradi. Izoh kodni tushuntirish yoki kodni vaqtincha "o'chirib qo'yish" uchun ishlatiladi:

// Bu izoh — ishlamaydi
// fmt.Println("eski usul")  // bu kod vaqtincha o'chirilgan
fmt.Printf("Future Value: %.1f\n", futureValue)

4. fmt.Sprintf — stringga yig'ish

Printf darhol ekranga chiqaradi. Sprintf esa chiqarmaydi, balki natijani stringga aylantirib qaytaradi — uni o'zgaruvchiga saqlaysiz:

formattedFV := fmt.Sprintf("Future Value: %.1f\n", futureValue)
formattedRFV := fmt.Sprintf("Future Value (adjusted for Inflation): %.1f\n", futureRealValue)
 
fmt.Print(formattedFV, formattedRFV)

Sprintf dagi SString: "natijani ekranga emas, stringga sol".

FunksiyaNima qiladi
Printfformatlaydi va darhol chiqaradi
Sprintfformatlaydi va stringga qaytaradi (chiqarmaydi)

5. Ko'p qatorli stringlar (backtick)

Oddiy qo'shtirnoq ("...") bitta qatorda bo'ladi — uni fizik qatorlarga bo'lib bo'lmaydi. Ko'p qatorli matn uchun backtick (`) ishlatiladi:

text := `Bu birinchi qator
Bu ikkinchi qator
Bu uchinchi qator`

Backtick — bir tirnoq (') emas, klaviaturadagi alohida belgi (odatda Tab ustida). Backtick ichidagi matn "xom" (raw) bo'ladi: \n kabi maxsus belgilar ishlamaydi, ular oddiy matn sifatida chiqadi. Yangi qator uchun shunchaki Enter bosasiz.

Backtick ayniqsa uzun SQL so'rovlari, HTML yoki ko'rsatmalar (help text) yozishda qulay.


O'zingiz sinab ko'ring

  1. Investitsiya kalkulyatoringizdagi Println larni Printf ga almashtirib, %.1f bilan chiqaring.
  2. %.1f ni %.2f, keyin %.0f qilib natijani solishtiring.
  3. %T bilan futureValue ning tipini chiqaring — nima chiqadi?
  4. Sprintf bilan ikkala natijani bitta o'zgaruvchiga yig'ing, keyin bir marta Print qiling.
  5. Backtick bilan 3 qatorli "hisobot" matnini yozib chiqaring. Ichiga \n qo'shib ko'ring — u qatorga o'tadimi yoki matn bo'lib chiqadimi?

4-dars · → 6-dars — Funksiyalar