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
+36.5k Golang : Validate IP address
+5.1k Golang : Check if a word is countable or not
+7.5k Golang : How to stop user from directly running an executable file?
+36.4k Golang : Convert date or time stamp from string to time.Time type
+9.5k Golang : Convert(cast) string to int64
+5.2k Golang : Customize scanner.Scanner to treat dash as part of identifier
+6k Golang : Function as an argument type example
+17.9k Golang : Simple client server example
+5.2k Responsive Google Adsense
+9.5k Golang : Extract or copy items from map based on value
+7.5k Golang : Handling Yes No Quit query input
+20.7k Android Studio : AlertDialog and EditText to get user string input example