英文:
Go - package ast : find package in file
问题
我正在使用ast包解析文件。我已经查看了一段时间的文档,但找不到一种方法来确定一个标记是否是包声明,例如文件开头的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)
}
return true
}
我正在寻找一种使用ast包的简洁方法来实现这一点,我几乎确定我只是在文档中漏掉了某些内容。
英文:
I am parsing files with the ast package.<br>
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.
答案1
得分: 1
基本上,看起来你需要寻找一个File
而不是一个包:
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
英文:
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
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论