Go语言的并发模型主要基于Goroutines和Channels。Goroutines是轻量级的线程,它们在Go运行时环境中被调度和管理。Channels则是Goroutines之间进行通信的管道。
go
即可。package main
import (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Printf("%d ", i)
time.Sleep(1 * time.Second)
}
}
func main() {
go printNumbers()
time.Sleep(6 * time.Second)
}
创建一个Channel:
ch := make(chan int)
向Channel发送数据:
ch <- 42
从Channel接收数据:
value := <-ch
下面是一个使用Goroutines和Channels实现的简单示例:
package main
import (
"fmt"
"time"
)
func sendNumbers(ch chan int) {
for i := 1; i <= 5; i++ {
ch <- i
time.Sleep(1 * time.Second)
}
close(ch)
}
func main() {
ch := make(chan int)
go sendNumbers(ch)
for value := range ch {
fmt.Printf("%d ", value)
}
}
在这个示例中,我们创建了一个带缓冲的Channel ch
,然后启动一个Goroutine sendNumbers
,该Goroutine将数字1到5发送到Channel。在主Goroutine中,我们使用range
循环从Channel接收数据并打印出来。当Channel被关闭且没有更多数据时,range
循环将自动结束。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。