dongpo5264
2016-11-01 11:41
浏览 32
已采纳

Go-包ast:在文件中查找包

I am parsing files with the ast package.
I have been looking at the documentation for a bit and I can't find a way to determine if a token is a package declaration, e.g: package main at the beggining of the file.

func find_package(node ast.Node) bool {
    switch x := node.(type) {
    // This works with *ast.Ident or *ast.FuncDecl ... but not
    // with *ast.Package
    case *ast.Package:
        fmt.Print(x.Name)
    }
    return true
}

I am looking for a clean way to do this with the ast package, I am almost sure I am just missing something in the documentation.

图片转代码服务由CSDN问答提供 功能建议

我正在解析具有 ast软件包的文件。
我一直在寻找 在文档中花了一点时间,我找不到一种方法来确定令牌是否为程序包声明,例如, eg package main

  func find_package(node ast.Node)bool {
 switch x:= node。(type){
 //可以与*一起使用 ast.Ident或* ast.FuncDecl ...,但不是
 //使用* ast.Package 
 case * ast.Package:
 fmt.Print(x.Name)
} 
返回true 
}  
   
 
 

我正在寻找一种使用 ast软件包的干净方法,我几乎可以肯定我只是在 文档。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doumengyin0491 2016-11-01 12:09
    已采纳

    So basically, it seems like you have to look for a File instead of a package:

    func find_package(node ast.Node) bool {
        switch x := node.(type) {
        case *ast.File:
            fmt.Print(x.Name)
        }
        return true
    }
    

    https://golang.org/pkg/go/ast/#File

    点赞 评论

相关推荐 更多相似问题