35 lines
		
	
	
		
			811 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			811 B
		
	
	
	
		
			Go
		
	
	
	
package packages_test
 | 
						|
 | 
						|
import (
 | 
						|
	"flag"
 | 
						|
	"fmt"
 | 
						|
	"os"
 | 
						|
 | 
						|
	"golang.org/x/tools/go/packages"
 | 
						|
)
 | 
						|
 | 
						|
// Example demonstrates how to load the packages specified on the
 | 
						|
// command line from source syntax.
 | 
						|
func Example() {
 | 
						|
	flag.Parse()
 | 
						|
 | 
						|
	// Many tools pass their command-line arguments (after any flags)
 | 
						|
	// uninterpreted to packages.Load so that it can interpret them
 | 
						|
	// according to the conventions of the underlying build system.
 | 
						|
	cfg := &packages.Config{Mode: packages.LoadSyntax}
 | 
						|
	pkgs, err := packages.Load(cfg, flag.Args()...)
 | 
						|
	if err != nil {
 | 
						|
		fmt.Fprintf(os.Stderr, "load: %v\n", err)
 | 
						|
		os.Exit(1)
 | 
						|
	}
 | 
						|
	if packages.PrintErrors(pkgs) > 0 {
 | 
						|
		os.Exit(1)
 | 
						|
	}
 | 
						|
 | 
						|
	// Print the names of the source files
 | 
						|
	// for each package listed on the command line.
 | 
						|
	for _, pkg := range pkgs {
 | 
						|
		fmt.Println(pkg.ID, pkg.GoFiles)
 | 
						|
	}
 | 
						|
}
 |