Go 如何协调Rob Pike'中stateFn和errorf签名的不匹配性;什么是词汇扫描谈话?

Go 如何协调Rob Pike'中stateFn和errorf签名的不匹配性;什么是词汇扫描谈话?,go,lexer,lexical-analysis,Go,Lexer,Lexical Analysis,这个问题与罗伯·派克(Rob Pike)的讲座有关(非常精彩!) 如何将lexer类型的errorf方法视为类型stateFn?它的签名与其他stateFns不同。在上一次迭代中返回errorf后,lexer的run()方法如何运行行state=state(l)nil。要运行errorf,需要使用(格式,参数…)调用它。当在run()方法中调用状态(l)时,它如何接受(*lexer)? errorf永远不会返回,它被调用,它所做的只是发出错误,然后返回nil。run检查返回的stateFn是否

这个问题与罗伯·派克(Rob Pike)的讲座有关(非常精彩!)


如何将
lexer
类型的
errorf
方法视为类型
stateFn
?它的签名与其他
stateFn
s不同。在上一次迭代中返回
errorf
后,
lexer
run()
方法如何运行行
state=state(l)
<只有在实际运行
errorf
之后,才会返回code>nil。要运行
errorf
,需要使用
(格式,参数…)
调用它。当在
run()
方法中调用
状态(l)
时,它如何接受
(*lexer)
?

errorf永远不会返回,它被调用,它所做的只是发出错误,然后返回nil。run检查返回的stateFn是否为nil,如果为真则继续,否则循环终止。()当然!它返回的是errorf返回的值,即零。现在很明显了。这最终成为一个愚蠢的问题。谢谢你的回复!