登录
首页 >  Golang >  Go问答

寻找 *ast.FuncDecl 相关的嵌套结构

来源:stackoverflow

时间:2024-03-07 18:30:18 213浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《寻找 *ast.FuncDecl 相关的嵌套结构》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

这里是handler接口的简单实现:

type someApi struct {
    mu       *sync.RWMutex
}
func (api *someApi) ServeHTTP(w http.ResponseWriter, r *http.Request) {}

func NewSomeApi(mu *sync.RWMutex) *someApi {
    return &someApi{
        mu: mu,
    }
}

func (srv *someApi) Create() {
  // some realisation
}

func Create() {
  // some realisation
}

我想要使用 go/ast 解析文件并为 someapi.create 函数创建装饰器。 使用 *ast.funcdecl.name 获取函数名称很简单,但是如何找到附加到 create 函数的哪个 someapi


解决方案


通过迭代 *ast.funcdecl.recv.list 解决了这个问题:

for _, l := range fn.Recv.List { // fn is *ast.FuncDecl
    star, ok := l.Type.(*ast.StarExpr)
    if !ok {
        continue
    }
    fmt.Println(star.X) // someApi
}

好了,本文到此结束,带大家了解了《寻找 *ast.FuncDecl 相关的嵌套结构》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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