本文整理汇总了Golang中go/ast.Node.Specs方法的典型用法代码示例。如果您正苦于以下问题:Golang Node.Specs方法的具体用法?Golang Node.Specs怎么用?Golang Node.Specs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类go/ast.Node
的用法示例。
在下文中一共展示了Node.Specs方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Visit
func (v *addImports) Visit(n ast.Node) ast.Visitor {
if n, ok := n.(*ast.GenDecl); ok && n.Tok == token.IMPORT {
// Found our imports. Add new ones. But first we need to
// eliminate duplicates
type Imp struct {
path string
name string
}
found := map[Imp]struct{}{}
specs := []ast.Spec{}
addWithoutDuplicates := func(list []ast.Spec) {
for _, s := range list {
var imp Imp
// Extract the path and name
i := s.(*ast.ImportSpec)
imp.path = i.Path.Value
if i.Name != nil {
imp.name = i.Name.Name
}
// Have we seen this before
_, ok := found[imp]
if !ok {
// No we haven't
specs = append(specs, s)
found[imp] = struct{}{}
}
}
}
addWithoutDuplicates(n.Specs)
addWithoutDuplicates(v.imports)
n.Specs = specs
return nil
}
return v
}