package main import ( "fmt" "time" ) func readygo() { fmt.Println("left") } func main() { go readyGo() //开启协程 使用关键字go time.Sleep(1) //暂停1秒 让协程有时间返回数据 fmt.Println("right") }
-- 创建多个协程
package main import ( "fmt" "time" ) func num() { //每1秒输出一个数字 1 2 3 4 5 for i := 1; i <= 5; i++ { time.Sleep(1000 * time.Millisecond) fmt.Printf("1s: %d\n", i) } } func abc() { //每1.5秒输出一个字母 a b c d e for i := 'a'; i <= 'e'; i++ { time.Sleep(1500 * time.Millisecond) fmt.Printf("1.5s: %c\n", i) } } func main() { go num() go abc() time.Sleep(10000 * time.Millisecond) //观察num的3秒-4秒和abc的3秒-4.5秒 fmt.Println("main terminated") }
package main import ( "fmt" "runtime" ) func loop() { for i := 0; i < 3; i++ { if i == 1 { runtime.Gosched() //让出时间片 fmt.Printf("i'm out\n") //(3) // runtime.Goexit() //退出当前协程 } fmt.Printf("%d\n", i) //(1) (4)(5) } } func main() { go loop() //开启协程 for i := 0; i < 2; i++ { runtime.Gosched() //让出时间片,先让别的协程loop()执行 fmt.Println("let' go") //(2) (6) } }
来源:https://www.cnblogs.com/cheesemp/p/10558158.html