0Pricing
Go Academy · Pelajaran

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:

  • WriteByte menambahkan satu bita.
  • WriteRune menambahkan 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, atau fmt.Fprintf.
  • Secara opsional, panggil Grow terlebih dahulu, baca hasilnya sekali dengan String(), 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

  1. Rune vs Byte
  2. Fungsi Paket strings
  3. strings.Builder
  4. Unicode dan utf8
← Kembali ke Go Academy