根据任务要求审查这段生成的事件收集代码。
按channel顺序最多收集limit个事件,返回不再与生产方缓冲区共享的payload,并在limit无效时避免panic。
Go
package events
import "sort"
type Event struct {
ID int
Payload []byte
}
func collect(ch <-chan Event, limit int) []Event {
events := make([]Event, limit)
for event := range ch {
events = append(events, event)
if len(events) == limit {
break
}
}
sort.Slice(events, func(i, j int) bool {
return events[i].ID < events[j].ID
})
return events
}
生成代码仅作示例,不代表任何特定模型