package args import "time" type Arg struct { Env string Flag string Help string Default interface{} Value interface{} ArgType Type } func NewArg(argType Type, key, help string, def interface{}) *Arg { return &Arg{ Env: key, Flag: key, Help: help, Default: def, ArgType: argType, } } func (a *Arg) GetInt(key string) int { if a.ArgType != INT { return -1 } return a.Value.(int) } func (a *Arg) GetString(key string) string { if a.ArgType != STRING { return "" } return a.Value.(string) } func (a *Arg) GetBool(key string) bool { if a.ArgType != BOOL { return false } return a.Value.(bool) } func (a *Arg) GetDuration(key string) time.Duration { if a.ArgType != DURATION { return time.Duration(0) } return a.Value.(time.Duration) }