0Pricing
Go Academy · Pelajaran

Writer Berbuffer

Lakukan penulisan secara batch

Writer Berbuffer adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Mengapa Penulisan dengan Buffer

Seperti pembacaan, setiap penulisan kecil dapat memicu panggilan sistem. bufio.Writer mengumpulkan penulisan di memori dan mengeluarkannya dalam potongan besar.

Penting: data yang disangga akan hilang kecuali Anda memanggil Flush().

Membuat bufio.Writer

Bungkus io.Writer apa pun. Di sini, kita membungkus os.Stdout.

package main

import (
	"bufio"
	"os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	w.WriteString("Hello buffered\n")
	w.Flush()
}

Jangan Lupa Flush

Tanpa Flush(), keluaran Anda mungkin tidak pernah muncul. Ungkapan yang umum digunakan adalah defer w.Flush().

package main

import (
	"bufio"
	"os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	defer w.Flush()
	w.WriteString("written via defer\n")
}

Menulis Bytes dan String

Gunakan Write untuk potongan bita, WriteString untuk string, serta WriteByte dan WriteRune untuk nilai tunggal.

package main

import (
	"bufio"
	"os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	w.Write([]byte("bytes "))
	w.WriteString("string ")
	w.WriteRune('!')
	w.WriteByte('\n')
	w.Flush()
}

Memeriksa Keadaan Buffer

Buffered() melaporkan jumlah bita yang sedang menunggu, sedangkan Available() melaporkan jumlah ruang kosong yang tersisa.

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	w.WriteString("abc")
	fmt.Fprintf(os.Stderr, "buffered: %d\n", w.Buffered())
	w.Flush()
}

Pengeluaran Otomatis saat Penuh

Saat penyangga penuh, bufio.Writer mengeluarkan isinya secara otomatis. Anda tetap harus memanggil Flush() di akhir untuk sisa penyangga yang belum penuh.

Ukuran Buffer Khusus

bufio.NewWriterSize(w, size) menetapkan kapasitas. Penyangga yang lebih besar mengurangi frekuensi pengeluaran isi.

package main

import (
	"bufio"
	"os"
)

func main() {
	w := bufio.NewWriterSize(os.Stdout, 8192)
	w.WriteString("custom size buffer\n")
	w.Flush()
}

Penulisan Berformat dengan Fprintf

Karena bufio.Writer merupakan io.Writer, Anda dapat meneruskannya ke fmt.Fprintf untuk keluaran berformat yang disangga.

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	for i := 1; i <= 3; i++ {
		fmt.Fprintf(w, "line %d\n", i)
	}
	w.Flush()
}

Menangani Kesalahan Write

Kesalahan dapat muncul pada penulisan berikutnya atau saat Flush(). Selalu periksa kesalahan yang dikembalikan oleh Flush().

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	w.WriteString("data\n")
	if err := w.Flush(); err != nil {
		fmt.Fprintln(os.Stderr, "flush failed:", err)
	}
}

Mengelompokkan Banyak Penulisan

Manfaat utamanya adalah pengulangan ketat yang berisi banyak penulisan kecil menjadi satu atau beberapa panggilan sistem setelah menggunakan penyanggaan.

package main

import (
	"bufio"
	"os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	defer w.Flush()
	for i := 0; i < 5; i++ {
		w.WriteString("x")
	}
	w.WriteByte('\n')
}

Praktik Terbaik

  • Selalu panggil Flush() atau gunakan defer untuk memanggilnya
  • Periksa kesalahan dari Flush(), bukan hanya dari setiap penulisan
  • Sesuaikan ukuran penyangga dengan beban kerja Anda

Pemeriksaan Singkat

Ujilah pengetahuan Anda tentang penulis berpenyangga.

Ringkasan

Anda telah mempelajari cara mengelompokkan penulisan dengan bufio.Writer.

  • NewWriter / NewWriterSize
  • Write, WriteString, WriteByte, dan WriteRune
  • Bekerja dengan fmt.Fprintf
  • Selalu panggil Flush() dan periksa kesalahannya

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Writer Berbuffer” gratis?

Ya — teks lengkap “Writer Berbuffer” 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 “Writer Berbuffer”?

Lakukan penulisan secara batch 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 3 dari 4.

Berapa lama pelajaran “Writer Berbuffer” 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. Reader Berbuffer
  2. Scanner
  3. Writer Berbuffer
  4. Streaming File Besar
← Kembali ke Go Academy