Supongamos que tenemos que llamar una función de forma asíncrona en Go, para eso son las goroutines, veamos un ejemplo :
package main
import (
"fmt"
"time"
)
func f(from string) {
for i := 0; i < 3; i++ {
fmt.Println(from, ":", i)
}
}
func main() {
f("direct")
go f("goroutine")
go func(msg string) {
fmt.Println(msg)
}("going")
time.Sleep(time.Second)
fmt.Println("done")
}
Como se ve, llamamos una función de forma directa sincrona, y otras 2 con goroutines. El resultado va ser :
$ go run goroutines.go
direct : 0
direct : 1
direct : 2
goroutine : 0
going
goroutine : 1
goroutine : 2
done
Si venimos de lenguajes como C podemos decir que Go con las goroutines crea un hilo por geroutin.
Si venimos de lenguajes como C podemos decir que Go con las goroutines crea un hilo por geroutin.
Dejo link: https://gobyexample.com/goroutines