总体概括 filter.go按照官方文件的顺序看,那样有点好不好理解,按照这个概括看稍微容易点 func NewRecorder(w Interface) *Recorder 创建一个新的记录器 创建的时候先实例化一个空的记录器,然后使用Filter对w进行过滤 func Filter(w Interface, f FilterFunc) Interface 具体实现都是有filterWatch实现的,所以先实例化一个filterWatch,将w,和f传给所以先实例化一个filterWatch 然后在使用和f传给所以先实例化一个filterWatch的loop方法进行过滤 func (r *Recorder) record(in Event) (Event, bool) 将event追加到r的evnts中并返回 func (r *Recorder) Events() []Event //复制Events func (fw *filteredWatch) ResultChan() <-chan Event func (fw *filteredWatch) Stop() func (fw *filteredWatch) loop()过滤器的具体实现 出现的数据结构 //从字面上理解是过滤的watch,过滤什么呢?先看具体包含了哪些内容,incomming Interface类型,一个result管道,一个过滤函数 //带着疑惑往后面看,看看到底过滤了什么玩意,此处为疑问1 type filteredWatch struct { incoming Interface result chan Event f FilterFunc } //记录器,一个interface,一个锁,一个事件组。 type Recorder struct {