fix the mappings-with-commas example

This commit is contained in:
Alex Flint 2021-04-20 12:23:49 -07:00
parent a84487a43a
commit 1e81bb6866
1 changed files with 9 additions and 6 deletions

View File

@ -95,15 +95,18 @@ func Example_mappings() {
// output: map[john:123 mary:456] // output: map[john:123 mary:456]
} }
type commaSeparated map[string]string type commaSeparated struct {
M map[string]string
}
func (c commaSeparated) UnmarshalText(b []byte) error { func (c *commaSeparated) UnmarshalText(b []byte) error {
c.M = make(map[string]string)
for _, part := range strings.Split(string(b), ",") { for _, part := range strings.Split(string(b), ",") {
pos := strings.Index(part, "=") pos := strings.Index(part, "=")
if pos == -1 { if pos == -1 {
return fmt.Errorf("error parsing %q, expected format key=value", part) return fmt.Errorf("error parsing %q, expected format key=value", part)
} }
c[part[:pos]] = part[pos+1:] c.M[part[:pos]] = part[pos+1:]
} }
return nil return nil
} }
@ -111,13 +114,13 @@ func (c commaSeparated) UnmarshalText(b []byte) error {
// This example demonstrates arguments with keys and values separated by commas // This example demonstrates arguments with keys and values separated by commas
func Example_mappingWithCommas() { func Example_mappingWithCommas() {
// The args you would pass in on the command line // The args you would pass in on the command line
os.Args = split("./example --m one=two,three=four") os.Args = split("./example --values one=two,three=four")
var args struct { var args struct {
M commaSeparated Values commaSeparated
} }
MustParse(&args) MustParse(&args)
fmt.Println(args.M) fmt.Println(args.Values.M)
// output: map[one:two three:four] // output: map[one:two three:four]
} }