fmt.Fprintln
- Go kursu
- Orta seviye
- Ders 57/80
- 4 dk
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.ResponseWriterHer 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
package main
import (
"fmt"
"os"
"text/tabwriter"
)
func main() {
// buraya yaz
}Örnek çözüm
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
fmt.____(os.Stderr, "hata:", err)
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 |