1 从一个简单示例开始
package main
import "fmt"
func main() {
//创建channel
ch := make(chan string)
//往channel发数据
ch <- `data1`
//打印
fmt.Printf(<-ch)
}
执行程序报错
报错协程死锁
原因是只有往发数据方,却没有接收数据方。
在go语言中channel被定义为协程之间的交流通道因此需要两个协程1为发送1为接收
修改代码
package main
import "fmt"
func main() {
//创建channel
ch := make(chan string)
//使用协程执行接收
go func() {
for {
//打印
fmt.Printf(<-ch)
}
}()
//往channel发数据
ch <- `data1`
}
执行成功
结果展示
2 换一种channel创建方式
package main
import "fmt"
func main() {
//创建channel
ch := make(chan string , 10)
//发送数据
for i:= 0 ; i< 10 ; i+