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 :
Advertisement
Something interesting
Tutorials
+14k Golang : convert rune to unicode hexadecimal value and back to rune character
+20.8k Golang : Underscore or snake_case to camel case example
+13.1k Golang : Handle or parse date string with Z suffix(RFC3339) example
+17.7k Golang : Read data from config file and assign to variables
+23.2k Golang : Print out struct values in string format
+6.1k Golang : Dealing with backquote
+8.1k Golang : HTTP Server Example
+7.6k Android Studio : AlertDialog to get user attention example
+18.5k Golang : Send email with attachment
+11.3k Golang : Intercept and process UNIX signals example
+12.6k Golang : Get absolute path to binary for os.Exec function with exec.LookPath