func DefaultFlags(flags ...string) {
	filtered := []string{}
	for _, arg := range os.Args {
		if arg != "-test.timeout=10m0s" {
			filtered = append(filtered, arg)
		}
	}
	os.Args = filtered
	list := map[string]struct{}{}
	reg := regexp.MustCompile(`^-test\.(\w+)`)
	for _, arg := range os.Args {
		ms := reg.FindStringSubmatch(arg)
		if ms != nil {
			list[ms[1]] = struct{}{}
		}
	}
	for _, flag := range flags {
		if _, has := list[strings.Split(flag, "=")[0]]; !has {
			os.Args = append(os.Args, "-test."+flag)
		}
	}
}
DefaultFlags will set the "go test" flag if not yet presented.
It must be executed in the init() function.
Such as the timeout:
DefaultFlags("timeout=10s")
package got
import (
	"flag"
	"os"
	"reflect"
	"regexp"
	"strings"
	"github.com/ysmood/got/lib/diff"
	"github.com/ysmood/got/lib/gop"
)
type Testable interface {
	Name() string                             
	Skipped() bool                            
	Failed() bool                             
	Cleanup(func())                           
	FailNow()                                 
	Fail()                                    
	Helper()                                  
	Logf(format string, args ...interface{})  
	SkipNow()                                 
}
type G struct {
	Testable
	Assertions
	Utils
}
type Options struct {
	Dump func(interface{}) string
	Keyword func(string) string
	Diff func(a, b interface{}) string
}
func Defaults() Options {
	return Options{
		func(v interface{}) string {
			return gop.F(v)
		},
		func(s string) string {
			return gop.ColorStr(gop.Red, " ⦗"+s+"⦘ ")
		},
		func(a, b interface{}) string {
			df := diff.Diff(gop.Plain(a), gop.Plain(b))
			return "\n\n" + df + "\n"
		},
	}
}
func NoColor() Options {
	return Options{
		func(v interface{}) string {
			return gop.Plain(v)
		},
		func(s string) string {
			return " ⦗" + s + "⦘ "
		},
		func(a, b interface{}) string {
			df := diff.Diff(gop.Plain(a), gop.Plain(b))
			return "\n\n" + df + "\n"
		},
	}
}
func (opts Options) NoDiff() Options {
	opts.Diff = nil
	return opts
}
func New(t Testable) G {
	if _, has := os.LookupEnv("NO_COLOR"); has {
		return NewWith(t, NoColor())
	}
	return NewWith(t, Defaults())
}
func NewWith(t Testable, opts Options) G {
	return G{
		t,
		Assertions{t, false, "", opts.Dump, opts.Keyword, opts.Diff},
		Utils{t},
	}
}