Чтобы пропустить идентификатор пакета, приложение должно написать код для перебора дочерних элементов * ast.File и пропустить идентификатор пакета в этом коде:
func walk(node ast.Node) bool {
switch n := node.(type) {
case *ast.File:
walkFileNoPackageName(n)
// Return false to prevent caller from also
// walking children of n.
return false
... other cases as in question
func walkFileNoPackageName(n *ast.File) {
if n.Doc != nil {
ast.Inspect(n.Doc, walk)
}
// ast.Inspect(n.Name, walk) Skip over name
for _, x := range n.Decls {
ast.Inspect(x, walk)
}
}
Запустить его надетская площадка .
Если вас интересуют только объявления уровня пакета в файле, начните проверку с этих объявлений:
f, err := parser.ParseFile(fs, filename, nil, parser.ParseComments)
if err != nil {
return err
}
for _, n := range f.Decls {
ast.Inspect(n, walk)
}
Используйте функцию walk
извопрос как есть.
Запустите его на детской площадке .