Skip to main content

Membuat Goroutine di Golang

Updated 2 min readMarkdown
Part of seriesGolang Goroutine
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

  1. Goroutine Tidak Menjamin Urutan
    Karena dijalankan secara konkuren, kamu tidak bisa prediksi urutan output-nya.

  2. 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! 🚀

No comments yet. Be the first to comment.