Go是一种高性能,轻量级的编程语言,它内置了原生的并发支持,使得编写并发程序变得非常容易和高效。在Go中,使用goroutine和channel来实现并发编程。
Goroutine
Goroutine是Go语言的轻量级线程,它可以在一个程序中同时运行多个函数。Goroutine是由Go运行时系统调度的,它不需要开发者手动管理线程的创建和销毁。因此,Goroutine的开销非常小,可以轻松创建成千上万个并发任务。
要创建一个Goroutine,只需在函数调用前添加关键字go,例如:
代码语言:javascript复制func main() {
go func() {
fmt.Println("Hello, World!")
}()
fmt.Println("Goodbye, World!")
}
在上面的示例中,我们使用go关键字创建了一个匿名函数的Goroutine,该函数打印“Hello, World!”。同时,主函数也打印“Goodbye, World!”。由于Goroutine和主函数是并发运行的,因此它们的输出顺序是不确定的。
Goroutine可以接受参数,并返回值。例如:
代码语言:javascript复制func compute(a int, b int, c chan int) {
c <- a b
}
func main() {
c := make(chan int)
go compute(1, 2, c)
result := <-c
fmt.Println(result)
}
在上面的示例中,我们定义了一个compute函数,它接受两个整数和一个通道作为参数。在compute函数中,我们将a和b相加,并将结果发送到通道c中。在主函数中,我们创建了一个整型通道c,并使用go关键字启动了一个compute函数的Goroutine。然后,我们从通道c中接收计算结果,并将其打印出来。