Back to Blog
Go Language

Membuat Goroutine di Golang

24 April 20252 min read
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)

go
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

go
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.

  1. 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.

  1. 1
    Membuat Goroutine di Golang
    24 Apr 20252 min readCurrent article
  2. 2
    Pengenalan Channel di Golang
    28 Apr 20253 min read
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8