CodeBlanks Logo Icon CodeBlanks

fmt.Fprintln

Fprintln ile Writer'a yazmayı öğrenirsin.

fmt.Fprintln

Fprint ailesi çıktıyı herhangi bir io.Writer'a yazar: dosya, HTTP yanıtı, tampon ya da os.Stderr.

fmt.Fprintln(os.Stderr, "uyarı:", err)
fmt.Fprintf(w, "<h1>%s</h1>", baslik)  // http.ResponseWriter

Her biri yazılan bayt sayısını ve hatayı döndürür. Dosyaya ya da ağa yazarken bu hata önemlidir; disk dolabilir, bağlantı kopabilir.

tabwriter ile hizalı çıktı

text/tabwriter sekmeyle ayrılmış metni sütunlara hizalayan bir Writer'dır; komut satırı tabloları için idealdir:

tw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
fmt.Fprintln(tw, "AD\tFİYAT")
fmt.Fprintln(tw, "Kalem\t12.50")
fmt.Fprintln(tw, "Defter\t7.00")
tw.Flush()

Sonda Flush çağrılmazsa hiçbir şey yazılmaz.

Uygulama Tablo çıktısı

text/tabwriter ile os.Stdout'a hizalı bir tablo yaz: başlık AD\tADET, satırlar Kalem\t3 ve Defter\t12. NewWriter(os.Stdout, 0, 0, 2, ' ', 0) kullan ve Flush çağır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "os"
    "text/tabwriter"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "os"
    "text/tabwriter"
)

func main() {
    tw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
    fmt.Fprintln(tw, "AD\tADET")
    fmt.Fprintln(tw, "Kalem\t3")
    fmt.Fprintln(tw, "Defter\t12")
    tw.Flush()
}

Beklenen çıktı

AD      ADET
Kalem   3
Defter  12

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 HTML üretirken kullanıcı verisini <code>Fprintf</code> ile doğrudan yazmanın riski nedir?

  • Daha yavaştır
  • Derlenmez
  • Risk yoktur
  • XSS: veri kaçışlanmaz, betik çalıştırılabilir Doğru cevap

Açıklama: fmt HTML'yi bilmez; kullanıcı verisi için html/template veya html.EscapeString kullanılmalıdır.

2 Hata akışına yaz

Soru
fmt.____(os.Stderr, "hata:", err)
Cevap
fmt.Fprintln(os.Stderr, "hata:", err)

Açıklama: Fprintln ilk argümandaki Writer'a yazar; burada stderr.

3 Writer hedefi

Kavram Anlamı
os.Stderr Hata mesajları
http.ResponseWriter Web yanıtı
tabwriter Hizalı tablo
bytes.Buffer Bellekte toplama

Orta seviye bölümündeki tüm dersler