有大佬可以帮忙看看 SendToProc 这个函数里 select+slice 会 panic 吗?感谢感谢🙏
func init() {
Chan = make(chan *GenData, 500000)
}
var Chan chan *GenData
type SendQueue struct {
queue []*GenData
size int
}
type GenData struct {
s string
}
func SendToProc() error {
go func() {
batchSize := 100
tc := time.NewTicker(time.Millisecond * 100)
sq := &SendQueue{
queue: make([]*GenData, 0),
size: 0,
}
for {
select {
case g := <-Chan:
sq.queue = append(sq.queue, g)
sq.size++
if sq.size == batchSize {
send(sq.queue)
sq.queue = sq.queue[:0]
sq.size = 0
}
case <-tc.C:
if sq.size > 0 {
send(sq.queue)
sq.queue = sq.queue[:0]
sq.size = 0
}
}
}
}()
return nil
}
func send(sendList []*GenData) {
for i, v := range sendList {
fmt.Println(i, v)
}
}