Golang go/ast.FileExports() function example

package go/ast

FileExports trims the AST for a Go source file in place such that only exported nodes remain: all top-level identifiers which are not exported and their associated information (such as type, initial value, or function body) are removed. Non-exported fields and methods of exported types are stripped. The File.Comments list is not changed.

FileExports returns true if there are exported declarations; it returns false otherwise.

Golang ast.FileExports() function usage example

 package main

 import (
 "fmt"
 "go/ast"
 "go/parser"
 "go/token"
 )

 var fset = token.NewFileSet()

 func main() {

 f, err := parser.ParseFile(fset, "", `
 package p
 type T struct {
 /* F1 lead comment */
 //
 F1 int  /* F1 */ // line comment
 // F2 lead
 // comment
 F2 int  // F2 line comment
 // f3 lead comment
 f3 int  // f3 line comment
 }
 `, parser.ParseComments)

 if err != nil {
 fmt.Println(err)
 }

 fmt.Println(ast.FileExports(f)) // true if there are exported declarations

 fmt.Println(f) // show the trimmed version of f

 }

Output :

true

&{ 2 p [0x2082421c0] scope 0x2082101f0 {

type T

}

[] [int int int] [0x2082560c0 0x208256160 0x2082561c0 0x2082562a0 0x2082562e0 0x208256380]}

Reference :

http://golang.org/pkg/go/ast/#FileExports

Advertisement