请教一个读取channel的问题

slash · · 861 次点击
非常感谢,确实是对channel不规范操作导致的
#5
更多评论
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
case r ,ok:= <-resultChan: if !ok { fmt.Println("结束") return } ...
#2