func (filter *Filter) AddWord(words ...string, db bool) error
定义错误,必须如下
func (filter *Filter) AddWord( db bool,words ...string) error
原理大概如同c++ 的不变参,不知道什么时候是最后一个参数。
详情:
EBP/ESP 寄存器
EBP 栈底地址寄存器
ESP 栈顶地址寄存器
//当调用一个函数的时候,先多之前的EBP/ESP 进行上下文保存,然后系统开辟一块新的固定栈空间,然后EBP指向栈底,ESP也指向栈底,ESP随着 push/pop而增大减小,周而复始。
//接着来看,参数的压栈和出栈顺序,
压栈是从参数列表的右边开始的,出栈则相反
这也为 可变参提供了有力的依据,
出栈的时候,可变参必须放在最右边,并且只允许有一个
因为如果不去对比,ebp和esp 以及参数的类型,是分不清 可变参的界限的,但是那样处理的效率很低下,所以编译器不允许这样的事情出现。
网友评论