Menggabungkan String secara Efisien di Go
Penggabungan string adalah operasi umum di banyak aplikasi Go, mulai dari menghasilkan konten dinamis sampai membangun kueri yang kompleks. Tapi, cara menggabungkannya nggak bisa asal, terutama kalau jumlah string-nya banyak. Pemilihan metode yang tepat bisa bikin aplikasi jalan lebih efisien dan nggak boros memori.
Berikut beberapa cara menggabungkan string di Go, dari yang paling simpel sampai yang lebih optimal.
1. Operator +
Cara paling gampang: pakai +
.
str1 := "Hello, "
str2 := "world!"
result := str1 + str2
Cocok untuk gabung 2–3 string kecil. Tapi kalau dipakai di loop atau data besar, bisa bikin performa drop karena tiap gabungan bikin string baru di memori.
2. strings.Join()
Kalau punya slice string, gunakan strings.Join()
.
stringsSlice := []string{"Hello", "world", "from", "Go!"}
result := strings.Join(stringsSlice, " ")
Lebih efisien daripada +
, apalagi kalau datanya sudah berupa slice.
Kurangnya: agak ribet kalau datanya bukan dalam bentuk slice.
3. bytes.Buffer
Sebelum ada strings.Builder
, banyak yang pakai bytes.Buffer
.
var buffer bytes.Buffer
buffer.WriteString("Hello, ")
buffer.WriteString("world!")
result := buffer.String()
Efisien buat bikin string panjang atau dibangun dalam loop. Sekarang agak jarang dipakai, tapi tetap berguna kalau masih main di Go lama (<1.10).
4. strings.Builder
Ini cara paling modern dan idiomatik (ada sejak Go 1.10).
var builder strings.Builder
builder.WriteString("Hello, ")
builder.WriteString("world!")
result := builder.String()
Minim alokasi memori, enak dipakai di loop besar, dan biasanya jadi pilihan default di Go versi terbaru.
Perbandingan Singkat
Metode | Pakai kalau… | Jangan pakai kalau… |
---|---|---|
+ |
Cuma gabung 2–3 string kecil | Dipakai di loop besar, boros memori |
strings.Join() |
Punya slice string dan mau digabung rapi | Data bukan slice, atau jumlahnya dikit |
bytes.Buffer |
Lagi di Go versi lama (<1.10), atau butuh kontrol lebih | Udah pakai Go baru, ada strings.Builder |
strings.Builder |
Go modern (≥1.10), butuh efisien, string banyak/looping | Pakai Go lama |
Kesimpulan
- Butuh cepat dan simpel → pakai
+
. - Gabung isi slice →
strings.Join()
. - Go versi lama →
bytes.Buffer
. - Go modern, performa penting →
strings.Builder
.
Pilih sesuai kebutuhan, jangan kebiasaan pakai satu cara di semua situasi.