//1. 定义一组channel ch := make(chan bool) //chan接收类型为bool 后还有一个参数为缓存参数本篇不讲解缓存(这一行不在代码范围内) //定义函数使用 func main(){ ch := make(chan bool) go Task(ch) <- ch close(ch) //关闭指令 } func Task(){ fmt.Println("Go Task") ch<-true //ch接到 true指令,把数据 GoTask 存入ch管道 }
上述完成一个简单的 GO channel 的使用
go routine
package main import ( "fmt" ) var c chan string //定义全局channel使用 func Ping() { var i int for { fmt.Println(<-c) // 函数执行到此,fmt.Println 打印内容,此时 channel c 无内容,等待并不向下进行 相当于 if c ~= nil ... //函数 main 写入内容至 channel c 后,继续向下执行 c<-fmt.Sprintf("SET CODE FROM Ping FUNC %d",i) //写入内容至 channel c i++ //累加 } } func main() { c = make(chan string) go Ping() //执行go routine 函数内容 for i := 0; i < 10; i++ { c<-fmt.Sprintf("SET CODE FROM MAIN FUNC %d",i) //写入内容至channel c fmt.Println(<-c ) //上述Ping函数写入数据后,取出数据 i++ } }