Mark McGranaghan deafc3a0bf handle ctrl-c
2012-10-11 08:00:42 -07:00

38 lines
884 B
Go

// A _goroutine_ is a lightweight thread of execution.
package main
import "fmt"
func f(from string) {
for i := 0; i < 3; i++ {
fmt.Println(from, ":", i)
}
}
func main() {
// Suppose we have a function call `f(s)`. Here's how
// we'd call that in the usual way, running it inline.
f("direct")
// To invoke this function in a goroutine, use
// `go f(s)`. This will start a new, concurrently
// executing goroutine.
go f("goroutine")
// You can also start a goroutine for an anonymous
// function.
go func() {
fmt.Println("going")
}()
// Our two goroutines are running asynchrously in
// separate goroutines now, so execution falls through
// to here. This `Scanln` code requires we press a key
// before the program exits.
var input string
fmt.Scanln(&input)
fmt.Println("done")
}