Skip to main content

Goroutine

goroutine merupakan salah satu method yang digunakan untuk membuat proses secara concurrently. ini seperti sebuah thread, namun goroutine ini membutuhkan sedikit memori daripada thread

untuk membuat goroutine bisanya hanya menggunakan method

go func(){}

dan untuk handlenya bisa menggunakan channel

make(chan <type-data>)

// example
error := make(chan error)

kode lengkapnya untuk goroutine dan handle errornya


package main

import (
"fmt"
"time"
)

func riskyOperation() error {
// Simulasi operasi yang mungkin gagal
time.Sleep(1 * time.Second)
return fmt.Errorf("something went wrong") // Contoh error
}


func main() {
errors := make(chan error) // Channel untuk menangkap error

go func() {
if err := riskyOperation(); err != nil {
errors <- err // Mengirim error ke channel
return
}
errors <- nil // Mengirim nil jika tidak ada error
}()

// Tunggu dan tangani error
err := <-errors
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Operation succeeded")
}
}

ada method lagi yang bisa digunakkan untuk mempermudah membuat goroutine dan handle errornya. yaitu dengan errgroup.Group()