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
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 kerja | Apa yang dicetaknya | Contoh |
|---|---|---|
%v | "nilai default" — berfungsi pada semua jenis | {Ada 36} |
%+v | seperti %v tetapi dengan nama field di struct | {Name:Ada Age:36} |
%#v | Representasi "Go-sintaks" dari nilai | main.User{Name:"Ada", Age:36} |
%T | jenis nilai | float64 |
%d | bilangan bulat dalam basis 10 | 42 |
%f | mengapung | 3.140000 |
%.2f | float dengan 2 desimal | 3.14 |
%s | tali | Ada |
%q | string "dikutip" (dengan tanda kutip dan pelolosan) | "Ada\n" |
%t | bodoh | true |
%x | heksadesimal (huruf kecil) | 2a |
%b | biner | 101010 |
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) // float64Sprintf: membuat string tanpa mencetaknya
Antarmuka yang sama seperti Printf, tetapi hasilnya dikembalikan kepada Anda sebagai a
string:
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anniAnda 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):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}Giliranmu
Cetak string 'ciao mondo' menggunakan fmt.Println.
Tunjukkan petunjuk
`fmt.Println` mengambil string dan menambahkan baris baru itu sendiri.
Solusi tersedia setelah 3 upaya
Gunakan fmt.Printf untuk mencetak 'eta=36' diikuti dengan baris baru, menggunakan kata kerja %d untuk bilangan bulat.
Tunjukkan petunjuk
`Printf` tidak menambahkan baris baru: Anda harus memasukkan `\\n` dalam string format.
Solusi tersedia setelah 3 upaya
Kata kerja mana yang mencetak TYPE dinamis suatu nilai?
fmt.Printf("?\n", 3.14)Rekap
Print/Println/Printfberbeda dalam spasi dan baris baru.%vadalah wildcard yang berfungsi pada jenis apa pun;%+vmenunjukkan nama bidang.%Tmencetak tipenya (berguna untuk debugging cepat).Sprintfmembuat string;Errorfmembuat kesalahan dengan pembungkus (%w).PrintfTIDAK menambahkan baris baru: tulis sendiri dalam format string.