← Kembali ke kursus
Pelajaran kursus · Go
Pelajaran 39

Fungsi string

Olah teks dengan paket strings.

Pahami konsepnya

Paket strings menyediakan peralatan lengkap untuk teks. Pemeriksaan: Contains, HasPrefix, HasSuffix, EqualFold (perbandingan tak pedulikan kapital). Pemotongan: Split (per pemisah), Fields (per spasi, pembersih ganda), TrimSpace, Trim/TrimPrefix. Penggabungan dan pengubahan: Join, Replace (dengan n untuk membatasi), ToUpper, ToLower, Repeat.

Pencarian posisi: Index mengembalikan posisi pertama atau -1, Count menghitung kemunculan, Cut membelah sekali menjadi before/after/Found — pola baru yang ramping untuk parsing pas seperti "key=value".

Untuk merangkai banyak potongan secara efisien ada strings.Builder: menambah lewat .WriteString lalu .String() di akhir. Perulangan s += potongan membuat salinan berulang (kompleksitas kuadratik); Builder menyimpannya dalam buffer yang tumbuh — standar untuk membangun teks panjang.

Coba contoh kode

package main

import (
    "fmt"
    "strings"
)

func main() {
    teks := "  Go itu seru dan Go itu cepat  "
    bersih := strings.TrimSpace(teks)
    kata := strings.Fields(bersih)
    fmt.Println(kata, len(kata))
    fmt.Println(strings.ReplaceAll(bersih, "Go", "Golang"))
    fmt.Println(strings.ToUpper(bersih))
}

TrimSpace memangkas spasi dua sisi; Fields memecah per spasi (berapapun jumlahnya) langsung menjadi []string bersih — pasangan pembuka hampir setiap olah teks. ReplaceAll mengganti semua kemunculan; versi Replace(s, lama, baru, n) membatasi n kali bila perlu.

Cut dan Builder

func main() {
    before, after, found := strings.Cut("user=andi", "=")
    fmt.Println(before, after, found) // user andi true

    var b strings.Builder
    for i := 1; i <= 3; i++ {
        fmt.Fprintf(&b, "baris %d\n", i)
    }
    fmt.Print(b.String())
}

Cut membelah sekali pada pemisah pertama dan melaporkan keberhasilannya tanpa error — lebih bersih daripada kombinasi Index + slicing untuk pasangan key=value. Builder menerima fmt.Fprintf langsung (ia adalah io.Writer) lalu menyerahkan hasil utuhnya lewat .String().

Latihan singkat

Uji: hitung kata dan ganti `seru` menjadi `mantap` — harus dua baris persis: `7` lalu `Go itu mantap dan Go itu cepat`.