协程(Goroutine)
协程是Go语言中实现并发的主要方式。它们是轻量级的线程,由Go运行时管理。协程可以轻松地创建和调度,使得Go程序能够高效地利用多核CPU。
创建协程
你可以通过以下方式创建一个协程:
func main() {
go func() {
fmt.Println("This is a goroutine")
}()
}
在这个例子中,我们创建了一个匿名函数作为协程。这个协程会在main函数执行完毕后立即开始执行。
协程的调度
Go的运行时系统会自动管理协程的调度,它会在适当的时机执行它们。这意味着你不需要担心协程的创建和调度,Go运行时会为你处理这些细节。
通道(Channel)
通道是Go中用于协程间通信的主要机制。通道可以传输数据,并且是同步的。这意味着发送操作会在通道被接收时才返回。
通道的声明和创建
ch := make(chan int)
在这个例子中,我们创建了一个名为ch
的通道,它可以传输整数类型的数据。
发送和接收
ch <- 1 // 发送
<-ch // 接收
在这个例子中,我们首先将整数1发送到通道ch
,然后从通道ch
接收数据。
通道的同步
通道是同步的,这意味着发送操作会在通道被