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()