Membuat Goroutine di Golang

Halo teman-teman! Selamat datang di tutorial pertama tentang Goroutine di Golang. Jika kamu baru belajar pemrograman atau baru mengenal Go, jangan khawatir. Artikel ini akan menjelaskan konsep Goroutine dengan bahasa yang sederhana dan mudah dipahami. Kita akan mulai dari dasar:
* Apa itu Goroutine
* Kenapa penting
* Cara membuatnya
* Contoh penggunaan dengan unit test
Apa Itu Goroutine?
Goroutine adalah fitur powerful di Golang yang memungkinkan kita menjalankan fungsi secara konkuren (bersamaan). Ini mirip seperti *thread* pada bahasa lain, tapi goroutine jauh lebih ringan dan efisien.
> Bayangkan kamu sedang memasak sambil menyeduh kopi. Kamu tidak menunggu kopi selesai baru mulai memasak, kan? Nah, begitu juga goroutine bekerja — melakukan banyak hal dalam waktu yang bersamaan.
Goroutine dikelola oleh Go runtime, bukan sistem operasi, jadi kamu bisa membuat ribuan goroutine tanpa takut membebani sistem.
Kenapa Perlu Menggunakan Goroutine?
* ✅ Ringan – Hanya butuh beberapa KB memori
* ✅ Konkuren – Jalankan banyak tugas secara paralel
* ✅ Mudah digunakan – Hanya butuh kata kunci go
Cara Membuat Goroutine
Untuk menjalankan fungsi secara konkuren, cukup tambahkan go di depan pemanggilan fungsi.
📦 Contoh 1: Menjalankan Satu Goroutine (Unit Test)
package goroutine_test
import (
"fmt"
"testing"
"time"
)
func sayHello() {
fmt.Println("Hello from goroutine")
}
func TestSayHello(t *testing.T) {
go sayHello()
fmt.Println("Hello from unit test")
time.Sleep(10 * time.Millisecond) // beri waktu goroutine berjalan
}🧠 Penjelasan:
* go sayHello() akan menjalankan fungsi sayHello() sebagai goroutine.
* fmt.Println(...) tetap berjalan di goroutine utama.
* time.Sleep digunakan agar unit test tidak langsung selesai sebelum goroutine sempat dijalankan.
🔁 Contoh 2: Menjalankan Banyak Goroutine dalam Loop
func displayNumber(number int) {
fmt.Printf("Number: %d\n", number)
}
func TestManyGoroutines(t *testing.T) {
for i := 0; i < 1000; i++ {
go displayNumber(i)
}
time.Sleep(50 * time.Millisecond)
}🧠 Penjelasan:
* Fungsi displayNumber() mencetak angka ke layar.
* Kita memanggilnya sebanyak 1000 kali sebagai goroutine.
* Karena semua goroutine berjalan paralel, urutannya tidak akan berurutan.
⚠️ Catatan Penting
- Goroutine Tidak Menjamin Urutan
Karena dijalankan secara konkuren, kamu tidak bisa prediksi urutan output-nya.
- Unit Test Bisa Selesai Duluan
Jika Test...() selesai duluan, goroutine bisa tidak sempat jalan.
Untuk sementara, kita pakai time.Sleep() sebagai solusi praktis.
Nanti, kita akan belajar teknik yang lebih baik pakai sync.WaitGroup.
Kesimpulan
Dengan Goroutine, kamu bisa membuat program Go menjalankan banyak tugas secara bersamaan hanya dengan satu keyword: go. Ini sangat berguna untuk membuat program yang lebih cepat dan responsif, terutama saat menangani banyak proses atau request.
Kalau kamu punya pertanyaan atau ide eksperimen lain, langsung aja tulis di komentar atau diskusi.
Selamat mencoba, dan sampai jumpa di tutorial selanjutnya! 🚀
Article Series
Golang Goroutine
Lanjutkan membaca seri ini untuk melihat perjalanan lengkapnya.
- 1Membuat Goroutine di Golang24 Apr 20252 min readCurrent article
- 2Pengenalan Channel di Golang28 Apr 20253 min read
- 3Race Condition dan Cara Menghindarinya di Golang28 Apr 20253 min read
- 4Menunggu Goroutine Selesai dengan WaitGroup29 Apr 20252 min read
- 5Memahami Buffered Channel di Golang29 Apr 20253 min read
- 6Mengenal Select Statement di Golang29 Apr 20252 min read
- 7Memahami Channel Direction di Golang29 Apr 20252 min read
- 8Best Practice dan Kapan Sebaiknya Tidak Menggunakan Goroutine29 Apr 20252 min read