登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-05 13:33:29 498浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《跟踪 Go 中的 ast.Walk() 解析错误》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我正在编写一个自定义解析器,并希望跟踪我遇到的错误。在执行 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 visitor
ast.Walk(v, astTree)

这可能不起作用,因为在 func(v 访问者) 中,v 不是指向结构的指针。跟踪此情况的推荐方法是什么?


解决方案


收集结构中的错误是一种很好的方法,但您需要使用指针接收器才能使其工作。

func (v *visitor) Visit(n ast.Node) ast.Visitor {  // change to pointer receiver
     ...
}

...

var v visitor
ast.Walk(&v, astTree) // pass pointer to visitor

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>