Ana içeriğe geç
Modül 1 · Ders 5 ders 5Kurstaki 5/50~10 min
Modül dersleri (5/5)

Fmt ile giriş/çıkış

Standart kütüphanenin fmt paketi, yazdırmak için ana aracınızdır. konsol, dizeleri biçimlendirme ve girişi okuma. Eğer kullandıysanız printf C'de kendinizi evinizdeymiş gibi hissedeceksiniz, ancak biraz ekstra incelikle %v ve %T fiilleri sayesinde.

Print, Println, Printf: üç işlev, üç davranış

Go
fmt.Print("ciao ", "mondo")    // "ciao mondo"  (niente newline finale)
fmt.Println("ciao", "mondo")   // "ciao mondo\n" (newline + spazi tra argomenti)
fmt.Printf("eta=%d\n", 36)     // "eta=36\n"    (format string esplicita)

Her zaman kullanacağınız fiiller

FiilNe yazdırıyorÖrnek
%v"varsayılan değer" — her türde çalışır{Ada 36}
%+v%v gibi ancak yapılarda alan adları var{Name:Ada Age:36}
%#vDeğerin "Go-sözdizimi" gösterimimain.User{Name:"Ada", Age:36}
%Tdeğerin türüfloat64
%d10 tabanındaki tamsayı42
%fşamandıra3.140000
%.2f2 ondalık sayıyla kayan3.14
%sdizeAda
%q"alıntılanan" dize (tırnak işaretleri ve kaçışlarla)"Ada\n"
%tbooltrue
%xonaltılık (küçük harf)2a
%bikili101010
Go
u := struct{ Name string; Age int }{"Ada", 36}
fmt.Printf("%v\n", u)   // {Ada 36}
fmt.Printf("%+v\n", u)  // {Name:Ada Age:36}
fmt.Printf("%T\n", 3.14) // float64

Sprintf: dizeleri yazdırmadan oluşturma

Printf ile aynı arayüz, ancak sonuç size bir string:

Go
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anni

Mesajlar, günlükler ve hatalar oluşturmak için sürekli olarak kullanacaksınız.

Errorf: dizeler + hata sarma

fmt.Errorf, Printf tarzı biçimlendirmeye sahip bir error oluşturur. ile özel fiil %w mevcut bir hatayı korumak için sarma yapabilirsiniz zincir (bunu Arayüzler modülünde derinlemesine ele alacağız):

Go
if _, err := os.Open("missing"); err != nil {
    return fmt.Errorf("apertura config: %w", err)
}

Sıra sende

Egzersiz#go.m1.l5.e1
Denemeler: 0Yükleniyor…

Fmt.Println'i kullanarak 'ciao mondo' dizesini yazdırın.

Düzenleyici yükleniyor…
İpucu göster

'fmt.Println' bir dize alır ve yeni satırın kendisini ekler.

3 denemeden sonra çözüm mevcut

Egzersiz#go.m1.l5.e2
Denemeler: 0Yükleniyor…

Tam sayı için %d fiilini kullanarak 'eta=36' ve ardından yeni satırı yazdırmak için fmt.Printf'i kullanın.

Düzenleyici yükleniyor…
İpucu göster

'Printf' yeni satır eklemez: biçim dizesine '\\n' eklemeniz gerekir.

3 denemeden sonra çözüm mevcut

Quiz#go.m1.l5.e3
Hazır

Hangi fiil bir değerin dinamik TYPE'ını yazdırır?

Go
fmt.Printf("?\n", 3.14)
Cevap seçenekleri

Özet

  • Print/Println/Printf boşluklar ve yeni satırlar bakımından farklılık gösterir.
  • %v her türde çalışan joker karakterdir; %+v alan adlarını gösterir.
  • %T türü yazdırır (hızlı hata ayıklama için kullanışlıdır).
  • Sprintf dizeleri oluşturur; Errorf sarmalamayla ilgili hatalar oluşturur (%w).
  • Printf yeni satır EKLEMEZ: bunu biçim dizesine kendiniz yazın.