为了账号安全,请及时绑定邮箱和手机立即绑定

跟踪 Go 中的 ast.Walk() 解析错误

跟踪 Go 中的 ast.Walk() 解析错误

Go
幕布斯7119047 2023-04-10 10:42:26
我正在编写一个自定义解析器,并希望跟踪我遇到的错误。在执行 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


查看完整回答
反对 回复 2023-04-10
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信