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
+9.2k Golang : Generate Codabar
+9.4k Golang : Timeout example
+7.1k Golang : Gorrila mux.Vars() function example
+5.2k PHP : See installed compiled-in-modules
+46.5k Golang : Marshal and unmarshal json.RawMessage struct example
+5.1k Linux : How to set root password in Linux Mint
+9.5k Golang : Changing a RGBA image number of channels with OpenCV
+4.7k Chrome : How to block socketloop.com links in Google SERP?
+13.4k Golang : Generate Code128 barcode
+7.5k Golang : How to handle file size larger than available memory panic issue
+4.7k Linux/MacOSX : How to symlink a file?
+13.1k Golang : List objects in AWS S3 bucket