In programming languages, code is often split up into functions. Functions help to make code reusable, extensible etc.
In Go there's a special case: goroutines. So is a goroutine a function? Not exactly. A goroutine is a lightweight thread managed by the Go.
If you call a function f like this:
f(x)
it's a normal function. But if you call it like this:
go f(x)
it's a goroutine. This is then started concurrently.
If you are new to Go, you can use the Go playground
Goroutine examples
Try this simple program below:
package main
import (
    "fmt"
    "time"
)
func say(s string) {
    for i := 0; i < 3; i++ {
        time.Sleep(100 * time.Millisecond)
        fmt.Println(s)
    }
}
func main() {
    go say("thread")
    say("hello")
}
Execute it with:
go run example.go
So while say('hello') is synchronously executed, go say('hello') is asynchronous.
Consider this program:
package main
import (
    "fmt"
    "time"
)
func main() {
    go fmt.Println("Hi from goroutine")
    fmt.Println("function Hello")
    time.Sleep(time.Second) // goroutine needs time to finish
}
Then when I ran it:
function Hello
Hi from goroutine
Program exited.
As expected, the goroutine (thread) started later.
Related links:
              
    
Top comments (0)