summaryrefslogtreecommitdiff
path: root/example_test.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2021-04-19 21:35:09 -0700
committerAlex Flint <[email protected]>2021-04-19 21:35:09 -0700
commita84487a43a66f9b51259e2a1f39a2a3e6183808e (patch)
tree9178a9227974d0f905adf494d841075f787d4da4 /example_test.go
parenta0937d1b588cbb39c0fb9c250ebf21dce42b7dab (diff)
updated the example for mappings with commas
Diffstat (limited to 'example_test.go')
-rw-r--r--example_test.go23
1 files changed, 18 insertions, 5 deletions
diff --git a/example_test.go b/example_test.go
index 26f24e7..47a9211 100644
--- a/example_test.go
+++ b/example_test.go
@@ -95,17 +95,30 @@ func Example_mappings() {
// output: map[john:123 mary:456]
}
+type commaSeparated map[string]string
+
+func (c commaSeparated) UnmarshalText(b []byte) error {
+ for _, part := range strings.Split(string(b), ",") {
+ pos := strings.Index(part, "=")
+ if pos == -1 {
+ return fmt.Errorf("error parsing %q, expected format key=value", part)
+ }
+ c[part[:pos]] = part[pos+1:]
+ }
+ return nil
+}
+
// This example demonstrates arguments with keys and values separated by commas
-func Example_mappingsWithCommas() {
+func Example_mappingWithCommas() {
// The args you would pass in on the command line
- os.Args = split("./example --userids john=123 mary=456")
+ os.Args = split("./example --m one=two,three=four")
var args struct {
- UserIDs map[string]int
+ M commaSeparated
}
MustParse(&args)
- fmt.Println(args.UserIDs)
- // output: map[john:123 mary:456]
+ fmt.Println(args.M)
+ // output: map[one:two three:four]
}
// This eample demonstrates multiple value arguments that can be mixed with