func Parse() {
	CommandLine.Parse(os.Args[1:])
}
Parse parses the command-line flags from os.Args[1:].
package getopt  
import (
	"flag"
	"fmt"
	"io"
	"os"
	"reflect"
	"strings"
	"unicode/utf8"
)
func init() {
	flag.Usage = func() {
		fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
		PrintDefaults()  
	}
	CommandLine.FlagSet = flag.CommandLine
	CommandLine.name = os.Args[0]
	CommandLine.errorHandling = flag.ExitOnError
	CommandLine.outw = os.Stderr
	CommandLine.Usage = func() { flag.Usage() }
}
var CommandLine FlagSet
type FlagSet struct {
	*flag.FlagSet
	alias         map[string]string
	unalias       map[string]string
	name          string
	errorHandling flag.ErrorHandling
	outw          io.Writer
}
func (f *FlagSet) out() io.Writer {
	if f.outw == nil {
		return os.Stderr
	}
	return f.outw
}
func (f *FlagSet) SetOutput(output io.Writer) {
	f.FlagSet.SetOutput(output)
	f.outw = output
}
func NewFlagSet(name string, errorHandling flag.ErrorHandling) *FlagSet {
	f := new(FlagSet)
	f.Init(name, errorHandling)
	return f
}
func (f *FlagSet) Init(name string, errorHandling flag.ErrorHandling) {
	if f.FlagSet == nil {
		f.FlagSet = new(flag.FlagSet)
	}
	f.FlagSet.Init(name, errorHandling)
	f.name = name
	f.errorHandling = errorHandling
	f.FlagSet.Usage = f.defaultUsage
}
func (f *FlagSet) init() {
	if f.alias == nil {
		f.alias = make(map[string]string)
		f.unalias = make(map[string]string)
	}
}
func (f *FlagSet) Lookup(name string) *flag.Flag {
	if x, ok := f.alias[name]; ok {
		name = x
	}
	return f.FlagSet.Lookup(name)
}
func Alias(short, long string) {
	CommandLine.Alias(short, long)
}
func (f *FlagSet) Alias(short, long string) {
	f.init()
	if short == "" || long == "" {
		panic("Alias: invalid empty flag name")
	}
	if utf8.RuneCountInString(short) != 1 {
		panic("Alias: invalid short flag name -" + short)
	}
	if utf8.RuneCountInString(long) == 1 {
		panic("Alias: invalid long flag name --" + long)
	}
	f1 := f.Lookup(short)
	f2 := f.Lookup(long)
	if f1 == nil && f2 == nil {
		panic("Alias: neither -" + short + " nor -" + long + " is a defined flag")
	}
	if f1 != nil && f2 != nil {
		panic("Alias: both -" + short + " and -" + long + " are defined flags")
	}
	if f1 != nil {
		f.alias[long] = short
		f.unalias[short] = long
	} else {
		f.alias[short] = long
		f.unalias[long] = short
	}
}
func Aliases(list ...string) {
	CommandLine.Aliases(list...)
}
func (f *FlagSet) Aliases(list ...string) {
	if len(list)%2 != 0 {
		panic("getopt: Aliases not invoked with pairs")
	}
	for i := 0; i < len(list); i += 2 {
		f.Alias(list[i], list[i+1])
	}
}
type boolFlag interface {
	IsBoolFlag() bool
}
func (f *FlagSet) failf(format string, args ...interface{}) error {
	err := fmt.Errorf(format, args...)
	fmt.Fprintln(f.out(), err)
	f.Usage()
	return err
}
func (f *FlagSet) defaultUsage() {
	if f.name == "" {
		fmt.Fprintf(f.out(), "Usage:\n")
	} else {
		fmt.Fprintf(f.out(), "Usage of %s:\n", f.name)
	}
	f.PrintDefaults()
}