0Pricing
Go Academy · Pelajaran

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 kontraknya
  • bytes.Buffer, os.Stdout, dan respons HTTP semuanya mengimplementasikannya
  • Dapat digunakan dengan fmt.Fprintf dan io.WriteString
  • Terimalah io.Writer untuk 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.

Semua pelajaran dalam kursus ini

  1. Interface Reader
  2. Interface Writer
  3. Fungsi Utilitas io
  4. Mengimplementasikan Reader Kustom
← Kembali ke Go Academy