strings.Builder
Bangun string secara efisien
strings.Builder 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.
Biaya Penggabungan dengan +
Karena string tidak dapat diubah, setiap s = s + part membuat string baru dan menyalin semua bita lagi.
Dalam perulangan, hal ini menjadi lambat dan memboroskan memori.
package main
import "fmt"
func main() {
s := ""
for i := 0; i < 3; i++ {
s = s + "go "
}
fmt.Println(s)
}Kenali strings.Builder
strings.Builder memperbesar buffer internal dan menghindari penyalinan berulang. Anda menulis ke dalamnya, lalu membaca hasilnya sekali di akhir.
Deklarasikan dengan var b strings.Builder.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.WriteString("Hello")
fmt.Println(b.String())
}WriteString dalam Perulangan
Keuntungan utamanya terlihat dalam perulangan. Panggil WriteString berulang kali, lalu baca hasilnya sekali dengan String().
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
for i := 0; i < 3; i++ {
b.WriteString("go ")
}
fmt.Println(b.String())
}Menulis Bita dan Rune
Builder menerima lebih dari sekadar string lengkap:
WriteBytemenambahkan satu bita.WriteRunemenambahkan satu titik kode Unicode.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.WriteString("Go")
b.WriteByte('!')
b.WriteRune('語')
fmt.Println(b.String())
}Builder Mengimplementasikan io.Writer
Karena Builder memenuhi antarmuka io.Writer, Anda dapat menggunakannya bersama fmt.Fprintf untuk memformat langsung ke dalam buffer.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
fmt.Fprintf(&b, "x=%d y=%d", 3, 4)
fmt.Println(b.String())
}Melacak Panjang
b.Len() memberi tahu berapa banyak bita yang telah ditulis sejauh ini, tanpa membangun string akhir.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.WriteString("hello")
fmt.Println(b.Len())
}Pra-alokasi dengan Grow
Jika Anda mengetahui perkiraan ukuran hasilnya, panggil b.Grow(n) terlebih dahulu. Ini mencadangkan kapasitas dan menghindari perubahan ukuran buffer berulang.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.Grow(64)
for i := 0; i < 5; i++ {
b.WriteString("item ")
}
fmt.Println(b.String())
}Mengatur Ulang Builder
b.Reset() mengosongkan buffer sehingga Anda dapat menggunakan kembali Builder yang sama untuk string berikutnya.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.WriteString("first")
b.Reset()
b.WriteString("second")
fmt.Println(b.String())
}Jangan Menyalin Builder
strings.Builder tidak boleh disalin setelah pertama kali digunakan. Teruskan dengan menggunakan penunjuk (*strings.Builder).
package main
import (
"fmt"
"strings"
)
func add(b *strings.Builder, word string) {
b.WriteString(word)
}
func main() {
var b strings.Builder
add(&b, "shared ")
add(&b, "builder")
fmt.Println(b.String())
}Membangun Baris CSV
Contoh praktis: susun baris yang dipisahkan koma secara efisien dengan Builder.
package main
import (
"fmt"
"strings"
)
func main() {
fields := []string{"id", "name", "age"}
var b strings.Builder
for i, f := range fields {
if i > 0 {
b.WriteByte(',')
}
b.WriteString(f)
}
fmt.Println(b.String())
}Kapan Menggunakan Builder
Gunakan strings.Builder saat Anda menggabungkan banyak bagian, terutama di dalam perulangan.
Untuk penggabungan satu kali dari slice yang sudah diketahui, strings.Join lebih sederhana dan sama cepatnya.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
for i := 1; i <= 3; i++ {
fmt.Fprintf(&b, "[%d]", i)
}
fmt.Println(b.String())
}Pemeriksaan Cepat
Mengapa Builder lebih disarankan daripada + berulang dalam perulangan?
Rangkuman: strings.Builder
Anda telah mempelajari cara membangun string secara efisien:
- Deklarasikan dengan
var b strings.Builder. - Tambahkan melalui
WriteString,WriteByte,WriteRune, ataufmt.Fprintf. - Secara opsional, panggil
Growterlebih dahulu, baca hasilnya sekali denganString(), dan jangan pernah menyalinnya.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
b.Grow(16)
b.WriteString("Go ")
b.WriteString("builder!")
fmt.Println(b.String())
}Pertanyaan yang Sering Diajukan
Apakah pelajaran “strings.Builder” gratis?
Ya — teks lengkap “strings.Builder” 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 “strings.Builder”?
Bangun string secara efisien 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 “strings.Builder” 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
- Rune vs Byte
- Fungsi Paket strings
- strings.Builder
- Unicode dan utf8