请教一个读取channel的问题

slash · · 841 次点击
case r ,ok:= <-resultChan: if !ok { fmt.Println("结束") return } ...
#2
更多评论
yccc
正在学go的路上
var err []string go func() { for { time.Sleep(time.Microsecond) // 加个休眠 select { case r := <-resultChan: length += 1 if r == "success" { if length == 100 { close(resultChan) done <- true } } else if r == "" { fmt.Printf("读到空字符串") } else { err = append(err, r) } } } }() 猜测是执行太快了,select有空就读chan,若读不到则返回chan对应type的默认值。
#1
退出时候关闭了管道, 关闭的管道读取时候会取到空字符串, 把关闭管道去掉
#3