GoDasturchi
Format Like a Pro

Format Like a Pro

Hozirgacha qiymatlarni bo'sh joy bilan ajratib chop etish uchun fmt.Println dan foydalanib keldingiz. Lekin narsalar qanday ko'rinishini nazorat qilmoqchi bo'lsangiz-chi? Go'da uchta formatlash funksiyasi bor:

FUNKSIYANIMA QILADI
fmt.PrintfFormatlangan stringni ekranga chop etadi
fmt.SprintfFormatlangan stringni qaytaradi (chop etmaydi)
fmt.FprintfFormatlangan stringni faylga yoki ulanishga yozadi

Ularning barchasi bir xil format fe'llaridan (verb) foydalanadi. Farqi — natija qayerga borishida.

example.go
fmt.Printf("Server %s: %d requests\n", "api-1", 1523)
// chop etadi: Server api-1: 1523 requests

msg := fmt.Sprintf("Server %s: %d requests", "api-1", 1523)
// qaytaradi: "Server api-1: 1523 requests"

E'tibor bering, Printf yangi qator uchun oxirida \n talab qiladi. Println buni avtomatik qo'shadi, lekin format funksiyalari qo'shmaydi.

Format fe'llari (verbs)

FE'LTURMISOL
%sstringfmt.Sprintf("hi %s", "Go")"hi Go"
%dbutun sonfmt.Sprintf("%d errors", 3)"3 errors"
%.2ffloat (2 kasr xona)fmt.Sprintf("$%.2f", 9.9)"$9.90"
%vistalgan qiymatfmt.Sprintf("%v", true)"true"

%.2f dagi nuqtadan keyingi son kasr xonalar sonini boshqaradi. %.1f bittasini, %.3f esa uchtasini ko'rsatadi.

Sprintf — eng ko'p ishlatadigan funksiyangiz. Funksiya formatlangan matnni qaytarishi kerak bo'lganda, buni shunday qilasiz.

>_ Exercise

formatDownload ni to'ldiring, u formatlangan yuklab olish holati qatorini qaytarsin.

Format quyidagicha: "backup.zip (3.50 MB) downloaded in 12s"

  • Hajm doim aynan 2 ta kasr xona bilan ko'rsatiladi, shuning uchun 0.80.80, 125.0 esa 125.00 bo'lib ko'rinadi
  • Son bilan MB orasiga bitta bo'sh joy qo'ying: 3.50 MB, 3.50MB emas
  • Stringni yasash uchun fmt.Sprintf dan foydalaning

Misollar:

  • formatDownload("backup.zip", 3.5, 12) "backup.zip (3.50 MB) downloaded in 12s" qaytaradi
  • formatDownload("photo.png", 0.8, 1) "photo.png (0.80 MB) downloaded in 1s" qaytaradi
  • formatDownload("video.mp4", 125.0, 45) "video.mp4 (125.00 MB) downloaded in 45s" qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Printf formatlangan matnni chop etadi, Sprintf esa uni string sifatida qaytaradi. Stringlar uchun %s, butun sonlar uchun %d, 2 kasr xonali floatlar uchun %.2f dan foydalaning.

🔒🔒🔒🔒
Finish
OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Format Like a Pro

Hozirgacha qiymatlarni bo'sh joy bilan ajratib chop etish uchun fmt.Println dan foydalanib keldingiz. Lekin narsalar qanday ko'rinishini nazorat qilmoqchi bo'lsangiz-chi? Go'da uchta formatlash funksiyasi bor:

FUNKSIYANIMA QILADI
fmt.PrintfFormatlangan stringni ekranga chop etadi
fmt.SprintfFormatlangan stringni qaytaradi (chop etmaydi)
fmt.FprintfFormatlangan stringni faylga yoki ulanishga yozadi

Ularning barchasi bir xil format fe'llaridan (verb) foydalanadi. Farqi — natija qayerga borishida.

example.go
fmt.Printf("Server %s: %d requests\n", "api-1", 1523)
// chop etadi: Server api-1: 1523 requests

msg := fmt.Sprintf("Server %s: %d requests", "api-1", 1523)
// qaytaradi: "Server api-1: 1523 requests"

E'tibor bering, Printf yangi qator uchun oxirida \n talab qiladi. Println buni avtomatik qo'shadi, lekin format funksiyalari qo'shmaydi.

Format fe'llari (verbs)

FE'LTURMISOL
%sstringfmt.Sprintf("hi %s", "Go")"hi Go"
%dbutun sonfmt.Sprintf("%d errors", 3)"3 errors"
%.2ffloat (2 kasr xona)fmt.Sprintf("$%.2f", 9.9)"$9.90"
%vistalgan qiymatfmt.Sprintf("%v", true)"true"

%.2f dagi nuqtadan keyingi son kasr xonalar sonini boshqaradi. %.1f bittasini, %.3f esa uchtasini ko'rsatadi.

Sprintf — eng ko'p ishlatadigan funksiyangiz. Funksiya formatlangan matnni qaytarishi kerak bo'lganda, buni shunday qilasiz.

>_ Exercise

formatDownload ni to'ldiring, u formatlangan yuklab olish holati qatorini qaytarsin.

Format quyidagicha: "backup.zip (3.50 MB) downloaded in 12s"

  • Hajm doim aynan 2 ta kasr xona bilan ko'rsatiladi, shuning uchun 0.80.80, 125.0 esa 125.00 bo'lib ko'rinadi
  • Son bilan MB orasiga bitta bo'sh joy qo'ying: 3.50 MB, 3.50MB emas
  • Stringni yasash uchun fmt.Sprintf dan foydalaning

Misollar:

  • formatDownload("backup.zip", 3.5, 12) "backup.zip (3.50 MB) downloaded in 12s" qaytaradi
  • formatDownload("photo.png", 0.8, 1) "photo.png (0.80 MB) downloaded in 1s" qaytaradi
  • formatDownload("video.mp4", 125.0, 45) "video.mp4 (125.00 MB) downloaded in 45s" qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Printf formatlangan matnni chop etadi, Sprintf esa uni string sifatida qaytaradi. Stringlar uchun %s, butun sonlar uchun %d, 2 kasr xonali floatlar uchun %.2f dan foydalaning.