CodeBlanks Logo Icon CodeBlanks

Verb'ler

%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şareti

Hata 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şil

Hatalar 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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
fmt.Printf("____
", 3.5)  // float64
Cevap
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

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