fmt.Sprintf
- Go kursu
- Orta seviye
- Ders 55/80
- 4 dk
Sprintf ile biçimli string döndürmeyi öğrenirsin.
fmt.Sprintf
Sprintf, Printf ile aynı biçimlendirmeyi yapar ama sonucu ekrana yazmak yerine string olarak döndürür. Mesaj, anahtar, dosya adı üretmek için kullanılır:
dosya := fmt.Sprintf("rapor-%04d-%02d.csv", 2026, 3)
// rapor-2026-03.csvAilenin üç üyesi: Print (stdout), Fprint (verilen Writer), Sprint (string). Her birinin …f ve …ln türevleri vardır.
Sprint ve Sprintln farkı
Sprint iki string olmayan değer arasına boşluk koyar, string'ler arasına koymaz; Sprintln her değer arasına boşluk ve sona satır sonu ekler:
fmt.Sprint("a", "b", 1, 2) // "ab1 2"
fmt.Sprintln("a", "b", 1, 2) // "a b 1 2\n"Okunur ve öngörülebilir çıktı için genellikle Sprintf tercih edilir.
Uygulama Dosya adı üret
dosyaAdi(yil, ay int, tur string) string yaz; "rapor-2026-03.csv" biçiminde ad üretsin (ay iki haneli). dosyaAdi(2026, 3, "csv") sonucunu yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func dosyaAdi(yil, ay int, tur string) string {
return fmt.Sprintf("rapor-%d-%02d.%s", yil, ay, tur)
}
func main() {
fmt.Println(dosyaAdi(2026, 3, "csv"))
}Beklenen çıktı
rapor-2026-03.csv
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Sıcak bir döngüde tek bir sayıyı string'e çevirmek için hangisi daha hızlıdır?
- string(n)
- strconv.Itoa(n) Doğru cevap
- fmt.Sprintf("%d", n)
- fmt.Sprint(n)
Açıklama: Sprintf biçim dizgesini ayrıştırır ve değeri arayüze kutular; strconv doğrudan dönüştürür. string(n) ise sayıyı bir rune'a çevirir, rakam üretmez.
2 Metin üret
anahtar := fmt.____("kullanici:%d", id)
anahtar := fmt.Sprintf("kullanici:%d", id)
Açıklama: Sprintf biçimli metni string olarak döndürür.
3 Fonksiyon ve hedef
| Kavram | Anlamı |
|---|---|
Printf |
Standart çıktı |
Fprintf |
Verilen io.Writer |
Sprintf |
Dönen string |
Errorf |
Dönen error |