一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
方法1 for循环+if判断
package main
import (
"fmt"
)
func main() {
c := make(chan int)
go func() {
for i := 0; i < 10; i++ {
c <- i
}
close(c)
}()
for {
if data, ok := <-c; ok {
fmt.Printf("data: %v\n", data)
} else {
break
}
}
}
运行结果
[Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
data: 0
data: 1
data: 2
data: 3
data: 4
data: 5
data: 6
data: 7
data: 8
data: 9
方法2 for range
package main
import (
"fmt"
)
func main() {
c := make(chan int)
go func() {
for i := 0; i < 10; i++ {
c <- i
}
close(c)
}()
for v := range c {
fmt.Printf("v: %v\n", v)
}
}
运行结果
[Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
v: 0
v: 1
v: 2
v: 3
v: 4
v: 5
v: 6
v: 7
v: 8
v: 9
注意:如果通道关闭,读多写少,没有了就是默认值,例如,int就是0,如果没有关闭就会死锁。