package safeChan import ( "testing" ) func TestSafeChan(t *testing.T) { ch := NewSafeChan[string](12) // go func() { _ = ch.Write("hello") t.Log("write hello. 剩余数量:", ch.Size()) // }() ch.Close() if err := ch.Write("zzz"); err != nil { t.Log("write zzz err.", err) } breakNum := 0 for { select { case <-ch.ctx.Done(): t.Log("done") breakNum++ case v, ok := <-ch.Reader(): if ok { t.Log("read", v, " 剩余数量:", ch.Size()) } else { t.Log("break") breakNum++ } default: t.Log("panic") breakNum++ } if breakNum > 10 { break } } }