package main
import (
"fmt"
)
func sendData(ch chan int, errCh chan error) {
defer close(ch)
defer close(errCh)
for i := 0; i < 5; i++ {
if i == 3 {
errCh <- fmt.Errorf("模拟发送数据时出现错误")
return
}
select {
case ch <- i:
case err := <-errCh:
fmt.Println("发送数据错误:", err)
return
}
}
}
func receiveData(ch chan int, errCh chan error) {
defer close(errCh)
for {
select {
case num, ok := <-ch:
if!ok {
return
}
fmt.Println("接收到数据:", num)
case err := <-errCh:
fmt.Println("接收数据错误:", err)
return
}
}
}
func main() {
ch := make(chan int)
errCh := make(chan error)
go sendData(ch, errCh)
go receiveData(ch, errCh)
select {}
}