-
Notifications
You must be signed in to change notification settings - Fork 66
Closed
Description
Took me a while, but looks like code is ignoring default value specified in tags for the struct
https://play.golang.com/p/Kw7X31Iu0EB
package main
import (
"flag"
"log"
"strings"
"github.com/peterbourgon/ff/v4"
)
type stringSlice []string
func (ss *stringSlice) Set(s string) error {
*ss = append(*ss, s)
return nil
}
func (ss *stringSlice) String() string {
return strings.Join(*ss, ",")
}
var _ flag.Value = (*stringSlice)(nil)
type Options struct {
Roots stringSlice `ff:"long: roots, default:'.,/home/me', usage:'Search path'"`
}
func main() {
opts := Options{}
flags := ff.NewFlagSet("maain")
if err := flags.AddStruct(&opts); err != nil {
log.Fatalf("Bad struct, %v", err)
}
if len(opts.Roots) == 0 || opts.Roots[0] != "." || opts.Roots[1] != "/home/me" {
log.Fatalf("Bad struct, no defaults, %#v", opts.Roots)
}
}
workaround is to populate struct with defaults on creation, but it might not be created by me.
Metadata
Metadata
Assignees
Labels
No labels