Cari Kata di Banyak Teks Sekaligus Pakai Goroutine di Go
1
min read .
Updated on
Go punya fitur konkuren yang kece banget lewat goroutine. Salah satu contoh penggunaannya: cari kata tertentu di banyak teks sekaligus. Daripada cek teks satu-satu secara berurutan, saya bisa suruh goroutine kerja bareng-bareng, hasilnya lebih cepat dan efisien.
Gambaran Umum
Program ini bakal:
- Cari kata di satu teks (fungsi
searchInText
). - Cari kata di banyak teks secara paralel pakai goroutine (fungsi
searchWordInTexts
). - Print hasil pencarian di
main
.
Kode Program
package main
import (
"fmt"
"strings"
"sync"
)
// searchInText: cek apakah kata ada di dalam teks
func searchInText(text, word string) bool {
if text == "" || word == "" {
return false
}
// Biar pencarian nggak case-sensitive
text = strings.ToLower(text)
word = strings.ToLower(word)
return strings.Contains(text, word)
}
// searchWordInTexts: cari kata di banyak teks sekaligus
func searchWordInTexts(texts []string, word string) bool {
var wg sync.WaitGroup
var mu sync.Mutex
found := false
for _, text := range texts {
wg.Add(1)
go func(t string) {
defer wg.Done()
if searchInText(t, word) {
mu.Lock()
found = true
mu.Unlock()
}
}(text)
}
wg.Wait()
return found
}
func main() {
texts := []string{
"This is a long example text",
"Another text for word searching",
"This program uses goroutines for searching",
}
word := "program"
if searchWordInTexts(texts, word) {
fmt.Printf("Kata '%s' ketemu di salah satu teks\n", word)
} else {
fmt.Printf("Kata '%s' nggak ditemukan\n", word)
}
}
Penjelasan
-
searchInText
Ubah teks dan kata jadi huruf kecil semua biar pencarian nggak peka kapital. Habis itu tinggal pakaistrings.Contains
. -
searchWordInTexts
- Pakai
sync.WaitGroup
buat nunggu semua goroutine selesai. - Pakai
sync.Mutex
biar variabelfound
aman kalau diakses banyak goroutine. - Setiap teks dicek di goroutine terpisah.
- Pakai
-
main
- Nyiapin teks dan kata yang mau dicari.
- Jalankan pencarian konkuren.
- Print hasil.
Kesimpulan
Dengan goroutine + sinkronisasi sederhana (WaitGroup
& Mutex
), kita bisa bikin pencarian kata di banyak teks jalan paralel dan lebih cepat.
Pendekatan ini kepake banget kalau datanya besar atau butuh performa tinggi.