Interface Writer
Tulis ke apa pun
Interface Writer adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Write ke Mana Saja
io.Writer menyatukan semua keluaran: berkas, jaringan, penyangga, keluaran standar, dan respons HTTP. Satu antarmuka, banyak tujuan.
Definisi Antarmuka
Kontraknya:
Write(p []byte) (n int, err error)
Fungsi tersebut menulis p dan mengembalikan jumlah bita yang ditulis serta kesalahan apa pun.
Menulis ke Buffer
bytes.Buffer mengimplementasikan io.Writer dan menampung keluaran di memori.
package main
import (
"bytes"
"fmt"
)
func main() {
var buf bytes.Buffer
buf.Write([]byte("Hello, "))
buf.WriteString("Writer!")
fmt.Println(buf.String())
}Menulis ke Keluaran Standar
os.Stdout adalah io.Writer. Begitu juga os.Stderr.
package main
import (
"io"
"os"
)
func main() {
io.WriteString(os.Stdout, "straight to stdout\n")
}fmt.Fprintf dan Penulis
Keluarga Fprint menulis teks berformat ke io.Writer apa pun.
package main
import (
"bytes"
"fmt"
)
func main() {
var buf bytes.Buffer
fmt.Fprintf(&buf, "x = %d\n", 42)
fmt.Print(buf.String())
}Kesalahan Penulisan Singkat
Jika Write mengembalikan n < len(p) dengan kesalahan nil, hal itu merupakan pelanggaran kontrak yang disebut penulisan singkat. Penulis yang mematuhi kontrak melaporkannya sebagai io.ErrShortWrite.
Fungsi yang Menerima Penulis
Tulislah fungsi yang menerima io.Writer agar logika yang sama dapat diarahkan ke berkas, penyangga, atau jaringan.
package main
import (
"fmt"
"io"
"os"
)
func greet(w io.Writer, name string) {
fmt.Fprintf(w, "Hi, %s\n", name)
}
func main() {
greet(os.Stdout, "Ada")
}Memisahkan Keluaran untuk Pengujian
Karena fungsi menerima io.Writer, pengujian dapat menangkap keluaran ke dalam bytes.Buffer dan memverifikasinya—tanpa perlu menyentuh berkas nyata.
package main
import (
"bytes"
"fmt"
)
func emit(w *bytes.Buffer) { fmt.Fprint(w, "result") }
func main() {
var b bytes.Buffer
emit(&b)
fmt.Println("captured:", b.String())
}Menulis Byte vs String
Write menerima irisan byte; io.WriteString merupakan kemudahan untuk string yang menghindari alokasi ketika penulis mendukungnya.
package main
import (
"io"
"os"
)
func main() {
os.Stdout.Write([]byte("bytes\n"))
io.WriteString(os.Stdout, "string\n")
}Selalu Periksa Galat Penulisan
Penulisan ke berkas atau soket dapat gagal di tengah aliran (cakram penuh, koneksi terputus). Periksalah galat yang dikembalikan, terutama untuk penulis yang bukan berbasis memori.
Satu Antarmuka, Banyak Tujuan
- Berkas, penyangga, keluaran standar/galat standar
- Penulis respons HTTP
- Pembungkus kompresi dan enkripsi
Semuanya memenuhi io.Writer, sehingga kode Anda tetap tidak bergantung pada tujuan.
Pemeriksaan Singkat
Ujilah pengetahuan Anda tentang io.Writer.
Ringkasan
Anda telah mempelajari antarmuka keluaran inti.
Write(p []byte) (int, error)adalah keseluruhan kontraknyabytes.Buffer,os.Stdout, dan respons HTTP semuanya mengimplementasikannya- Dapat digunakan dengan
fmt.Fprintfdanio.WriteString - Terimalah
io.Writeruntuk API yang fleksibel dan mudah diuji
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Interface Writer” gratis?
Ya — teks lengkap “Interface Writer” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Interface Writer”?
Tulis ke apa pun Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Interface Writer” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.