定义
Go 语言的 协程(Groutine) 是与其他函数或方法一起并发运行的工作方式。协程可以看作是轻量级线程。与线程相比,创建一个协程的成本很小。因此在 Go 应用中,常常会看到会有很多协程并发地运行。
语法
// 定义一个函数
func functionName(parameterList) {
code
}
// 执行一个函数
functionName(parameterList)
// 开启一个协程执行这个函数
go functionName(parameterList)
使用
package main
import (
"fmt"
"time"
)
func PrintInfo() {
fmt.Println("从0到Go语言微服务架构师")
}
func main() {
// 开启一个协程执行 PrintInfo 函数
go PrintInfo()
// 使主协程休眠 1 秒
time.Sleep(1 * time.Second)
// 打印 main
fmt.Println("main")
}
启动多个Go协程
package main
import (
"fmt"
"time"
)
func PrintNum(num int) {
for i := 0; i < 3; i++ {
fmt.Println(num)
// 避免观察不到并发效果 加个休眠
time.Sleep(100 * time.Millisecond)
}
}
func main() {
// 开启 1 号协程
go PrintNum(1)
// 开启 2 号协程
go PrintNum(2)
// 使主协程休眠 1 秒
time.Sleep(time.Second)
}