package cspimport (    "fmt"    "sync"    "testing")/* func dataProducer(ch chan int, wg *sync.WaitGroup) {    go func() {        for i := 0; i < 10; i++ {            ch <- i        }        wg.Done()    }()}func dataReceiver(ch chan int, wg *sync.WaitGroup) {    go func() {        for i := 0; i < 10; i++ {            data := <-ch            fmt.Println(data)        }        wg.Done()    }()}func TestChannelClose(t *testing.T) {    ch := make(chan int)    var wg sync.WaitGroup    wg.Add(1)    dataProducer(ch, &wg)    wg.Add(1)    dataReceiver(ch, &wg)    wg.Wait()} */func dataProducer(ch chan int, wg *sync.WaitGroup) {    go func() {        for i := 0; i < 10; i++ {            ch <- i        }        close(ch) //没有加closepanic了        wg.Done()    }()}func dataReceiver(ch chan int, wg *sync.WaitGroup) {    go func() {        for {            if data, ok := <-ch; ok {                fmt.Println(data)            } else {                break            }        }        wg.Done()    }()}func TestChannelClose(t *testing.T) {    ch := make(chan int)    var wg sync.WaitGroup    wg.Add(1)    dataProducer(ch, &wg)    wg.Add(1)    dataReceiver(ch, &wg)    // wg.Add(1)    // dataReceiver(ch, &wg)    // wg.Add(1)    // dataReceiver(ch, &wg)    wg.Wait()}/*>go  test0123456789PASSok        0.249s> *//*func TestChannelClose(t *testing.T) {    ch := make(chan int)    var wg sync.WaitGroup    wg.Add(1)    dataProducer(ch, &wg)    wg.Add(1)    dataReceiver(ch, &wg)    wg.Add(1)    dataReceiver(ch, &wg)    wg.Add(1)    dataReceiver(ch, &wg)    wg.Wait()}>go  test0145678932PASSok        0.360s> */