Verb'ler
- Go kursu
- Orta seviye
- Ders 54/80
- 4 dk
%v, %d, %s gibi yaygın verb'leri öğrenirsin.
Verb'ler
En sık kullanılan verb'ler:
%v varsayılan biçim {Ada 36}
%+v alan adlarıyla {Ad:Ada Yas:36}
%#v Go sözdizimiyle main.Kisi{Ad:"Ada", Yas:36}
%T tür main.Kisi
%d tamsayı %x onaltılık %b ikili
%s metin %q tırnaklı metin
%f ondalık %e bilimsel
%t bool %p işaretçi
%% yüzde işaretiHata ayıklarken %+v ve %#v değerin içini en açık şekilde gösterir.
Stringer arayüzü
Bir tür String() string yöntemine sahipse %v ve %s onu kullanır:
type Renk int
func (r Renk) String() string {
return [...]string{"kırmızı", "yeşil", "mavi"}[r]
}
fmt.Println(Renk(1)) // yeşilHatalar için aynı rolü Error() string oynar. Dikkat: String içinde fmt.Sprintf("%v", r) çağırmak sonsuz özyinelemeye yol açar.
Uygulama Stringer yaz
type Durum int için Aktif (0) ve Pasif (1) sabitlerini iota ile tanımla. String() yöntemi "aktif"/"pasif" döndürsün. fmt.Printf("%v %d\n", Pasif, Pasif) yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
type Durum int
const (
Aktif Durum = iota
Pasif
)
func (d Durum) String() string {
if d == Aktif {
return "aktif"
}
return "pasif"
}
func main() {
fmt.Printf("%v %d\n", Pasif, Pasif)
}Beklenen çıktı
pasif 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>fmt.Printf("%q", "a\tb")</code> ne yazdırır?
- a\tb
- %q
- "a\tb" (kaçışlı ve tırnaklı) Doğru cevap
- a b
Açıklama: %q değeri Go dizge sözdizimiyle, özel karakterleri kaçışlayarak yazar; görünmeyen karakterleri bulmak için idealdir.
2 Türü yazdır
fmt.Printf("____
", 3.5) // float64
fmt.Printf("%T
", 3.5) // float64
Açıklama: %T değerin Go türünü yazdırır.
3 Verb ve çıktı
| Kavram | Anlamı |
|---|---|
%v |
{Ada 36} |
%+v |
{Ad:Ada Yas:36} |
%T |
main.Kisi |
%x (255) |
ff |