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
+4k Detect if Google Analytics and Developer Media are loaded properly or not
+25.8k Golang : Daemonizing a simple web server process example
+6.1k PageSpeed : Clear or flush cache on web server
+17.7k Golang : Read data from config file and assign to variables
+9.4k Golang : Scramble and unscramble text message by randomly replacing words
+12.1k Golang : Perform sanity checks on filename example
+19.2k Golang : Execute shell command
+15k Golang : package is not in GOROOT during compilation
+13.8k Golang : Gin framework accept query string by post request example
+18.2k Golang : Get command line arguments
+15.8k Golang : How to login and logout with JWT example
+6.3k Golang : Calculate US Dollar Index (DXY)