根据任务要求审查这段生成的事件收集代码。
按 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
}
生成代码仅作示例,不代表任何特定模型