企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一、概念 * 只需要在语句前添加go关键字,就可以创建并发执行单元 * 开发⼈员无需了解任何执⾏细节,调度器会自动将其安排到合适的系统线程上执行 * 如果主协程退出了,其他任务不在执行 ## 一、创建协程 ~~~ package main import ( "fmt" "time" ) //子协程 func newTask() { i := 0 for { i++ fmt.Printf("new goroutin:i=%d\n", i) time.Sleep(1 * time.Second) } } func main() { //启动子协程 go newTask() i := 0 for { i++ fmt.Printf("main goroutin:i=%d\n", i) time.Sleep(1 * time.Second) } } ~~~ 注意:子协程和主协程不相关 ## 二、如果主协程退出了,其他任务不在执行 ~~~ package main import ( "fmt" "time" ) func main() { go func() { i := 0 for { i++ fmt.Printf("new goroutin:i=%d\n", i) time.Sleep(1 * time.Second) } }() i := 0 for { i++ fmt.Printf("main goroutin:i=%d\n", i) time.Sleep(1 * time.Second) if i == 2 { break } } } ~~~ ## 三、main函数中只有协程不会执行代码 ~~~ package main import ( "fmt" "time" ) func main() { go func() { i := 0 for { i++ fmt.Printf("new goroutin:i=%d\n", i) time.Sleep(1 * time.Second) } }() } ~~~ 执行结果: