我正在编写一个自定义解析器,并希望跟踪我遇到的错误。在执行 a 时如何在不使用全局变量的情况下跟踪解析过程中的错误ast.Walk?type visitor struct { err error}func (v visitor) Visit(n ast.Node) ast.Visitor { switch d := n.(type) { case *ast.BinaryExpr: if d.Op != token.LAND { v.err = fmt.Errorf("Illegal operator :%s", d.Op) // NOT WORKING return v } } return v}我将上面的代码用作:-var v visitorast.Walk(v, astTree)这可能不起作用,因为在 中func (v visitor),v 不是指向结构的指针。跟踪这个的推荐方法是什么?
1 回答
饮歌长啸
TA贡献1951条经验 获得超3个赞
收集结构中的错误是一种很好的方法,但您需要使用指针接收器来使其工作。
func (v *visitor) Visit(n ast.Node) ast.Visitor { // change to pointer receiver
...
}
...
var v visitor
ast.Walk(&v, astTree) // pass pointer to visitor
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消