goroutine
package 主要 import “fmt” import “时间” func printn (id int) { for 小姐::=,0;i<10;我+ +,{ fmt.Println (id、”:“我) } } func main () { for 小姐::=0;i<5,我+ +,{ go printn(我) } fmt.Println(“等待…”) time . sleep (time.Second *, 3) }//执行结果: 等待…… 0,:0 2,:0 0,:1 2,:1 0,:2 1,:0 2,:2 0,:3 2,:3 1,:1 0,:4 2,:4 0,:5 1,:2 2,:5 0,:6 1,:3 2,:6 0,:7 1,:4 2,:7 1,:5 3,:0 3,:1 3,:2 2,:8 1,:6 2,:9 1,:7 3,:3 0,:8 0,:9 1,:8 3,:4 3,:5 3,:6 3,:7 3,:8 3,:9 1,:9 4,:0 4,:1 4,:2 4,:3 4,:4 4,:5 4,:6 4,:7 4,:8 4,:9//,如果把睡眠去掉会怎么样? package 主要 import “fmt”//import “时间” func printn (id int) { for 小姐::=,0;i<10;我+ +,{ fmt.Println (id、”:“我) } } func main () { for 小姐::=0;i<5,我+ +,{ go printn(我) } fmt.Println(“等待…”)//time . sleep (time.Second *, 3) }//,执行结果: 等待…,,,,,,,,,,,,//原因是没有睡眠,当主函数执行完会中断其他所有没执行完的任务
2频道
package 主要 import “fmt”//import “时间” func printn (id int, c chan int) { for 小姐::=,0;i<10;我+ +,{ fmt.Println (id、”:“我) } c & lt;作用;0,,,,,,//将数值存到,c } func main () { c :=(chan int),,,//,创建一个channel go printn (1 c)//for 小姐::=0;i<5,我+ +,{//go printn(我)//} fmt.Println(“等待…”)//time . sleep (time.Second *, 3) & lt;安康;c ,,,,,,,//,取出c得值 }//,执行结果: 等待…… 1,:0 1,:1 1,:2 1,:3 1,:4 1,:5 1,:6 1,:7 1,:8 1,:,9
3, select
package 主要 import “fmt” import “时间” func fun1 (c chan 字符串){ for { c & lt;作用;“得到fun1 +” time . sleep (time.Second *, 2) } } func fun2 (c chan 字符串){ ,,,,,,,for { ,,,,,,,,,,,,,,,c & lt;作用;“得到fun2 -” ,,,,,,,,,,,,,,,time . sleep (* time.Second 2) ,,,,,,,} } func main () { c1 :=(chan 字符串) c2 :=(chan 字符串) go fun1 (c1) go fun2 (c2) for { select {,,,,,,,,,, case msg1 :=, & lt;作用;c1: fmt.Println (msg1) case msg2 :=, & lt;作用;c2: ,,,,,,,,,,,,,,,,,,,,,,,fmt.Println (msg2) } } }//,执行结果: 得到fun2 - 得到fun1 + 得到fun2 - 得到fun1 + 得到fun1 + 得到fun2 - 得到fun2 - 得到fun1 + 得到fun1 + 得到fun2 - ...........