diff --git a/argparse.go b/argparse.go index d75474d..37a5da1 100644 --- a/argparse.go +++ b/argparse.go @@ -129,8 +129,14 @@ func (p *Parser) parse(args *[]string) error { func (p *Parser) setDefaultValue() { for _, v := range p.args { + // fmt.Printf("show %s , parsed: %v, defVal: %v\n", v.name(), v.parsed, v.defaultValue) if !v.parsed { - v.value = v.defaultValue + t := reflect.ValueOf(v.value) + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + t.Set(reflect.ValueOf(v.defaultValue)) + // *v.value = v.defaultValue } } } diff --git a/example/main.go b/example/main.go index 642dad6..e40e021 100644 --- a/example/main.go +++ b/example/main.go @@ -17,7 +17,7 @@ func main() { // "-n", "name!!", // "-i", "item1", // "-i", "item2", - "-h", + // "-h", } p := argparse.New() @@ -37,7 +37,7 @@ func main() { p.FloatVar(&floatVal, 1.2, "ff", "float", "float value", nil) p.StringSliceVar(&sarr, []string{}, "i", "item", "item list", nil) // uncomment to test required arg missing - p.IntVar(&missReq, -1, "m", "miss", "require value", &argparse.Option{Require: true}) + // p.IntVar(&missReq, -1, "m", "miss", "require value", &argparse.Option{Require: true}) p.Help("h", "help") name = p.String("", "n", "name", "show name", nil)