Lompati ke konten utama
Modul 1 · Pelajaran 5 dari 55/50 dalam kursus~10 min
Pelajaran modul (5/5)

Masukan/keluaran dengan fmt

Paket fmt perpustakaan standar adalah alat utama Anda untuk mencetak konsol, memformat string dan membaca input. Jika Anda telah menggunakan printf di C Anda akan merasa seperti di rumah sendiri, tetapi dengan beberapa kehalusan ekstra berkat kata kerja %v dan %T.

Print, Println, Printf: tiga fungsi, tiga perilaku

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)

Kata kerja yang akan Anda gunakan sepanjang waktu

kata kerjaApa yang dicetaknyaContoh
%v"nilai default" — berfungsi pada semua jenis{Ada 36}
%+vseperti %v tetapi dengan nama field di struct{Name:Ada Age:36}
%#vRepresentasi "Go-sintaks" dari nilaimain.User{Name:"Ada", Age:36}
%Tjenis nilaifloat64
%dbilangan bulat dalam basis 1042
%fmengapung3.140000
%.2ffloat dengan 2 desimal3.14
%staliAda
%qstring "dikutip" (dengan tanda kutip dan pelolosan)"Ada\n"
%tbodohtrue
%xheksadesimal (huruf kecil)2a
%bbiner101010
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: membuat string tanpa mencetaknya

Antarmuka yang sama seperti Printf, tetapi hasilnya dikembalikan kepada Anda sebagai a string:

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

Anda akan menggunakannya terus-menerus untuk membuat pesan, log, dan kesalahan.

Errorf: string + pembungkus kesalahan

fmt.Errorf membuat error dengan format gaya Printf. Dengan kata kerja khusus %w Anda dapat membungkus kesalahan yang ada untuk mempertahankannya rantai (kita akan membahasnya secara mendalam di modul Antarmuka):

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

Giliranmu

Latihan#go.m1.l5.e1
Upaya: 0Memuat…

Cetak string 'ciao mondo' menggunakan fmt.Println.

Memuat editor…
Tunjukkan petunjuk

`fmt.Println` mengambil string dan menambahkan baris baru itu sendiri.

Solusi tersedia setelah 3 upaya

Latihan#go.m1.l5.e2
Upaya: 0Memuat…

Gunakan fmt.Printf untuk mencetak 'eta=36' diikuti dengan baris baru, menggunakan kata kerja %d untuk bilangan bulat.

Memuat editor…
Tunjukkan petunjuk

`Printf` tidak menambahkan baris baru: Anda harus memasukkan `\\n` dalam string format.

Solusi tersedia setelah 3 upaya

Quiz#go.m1.l5.e3
Siap

Kata kerja mana yang mencetak TYPE dinamis suatu nilai?

Go
fmt.Printf("?\n", 3.14)
Pilihan jawaban

Rekap

  • Print/Println/Printf berbeda dalam spasi dan baris baru.
  • %v adalah wildcard yang berfungsi pada jenis apa pun; %+v menunjukkan nama bidang.
  • %T mencetak tipenya (berguna untuk debugging cepat).
  • Sprintf membuat string; Errorf membuat kesalahan dengan pembungkus (%w).
  • Printf TIDAK menambahkan baris baru: tulis sendiri dalam format string.