aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerin Stock <terinjokes@gmail.com>2018-06-20 14:00:04 -0700
committerIan Lance Taylor <iant@golang.org>2018-06-21 23:32:53 +0000
commit6c8100270cd1254fef21b48fa3f4e77fc9aab69d (patch)
tree280ce356d0883efef767d700fa6ee14d7d5adcf2
parent4b3428998d46c34efd6cbf219fbd0219d861307d (diff)
downloadgo-6c8100270cd1254fef21b48fa3f4e77fc9aab69d.tar.gz
go-6c8100270cd1254fef21b48fa3f4e77fc9aab69d.zip
flag: add a Value example
Change-Id: I579cc9f4f8e5be5fd6447a99614797ab7bc53611 Reviewed-on: https://go-review.googlesource.com/120175 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-rw-r--r--src/flag/example_value_test.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/flag/example_value_test.go b/src/flag/example_value_test.go
new file mode 100644
index 0000000000..9d464c62e8
--- /dev/null
+++ b/src/flag/example_value_test.go
@@ -0,0 +1,44 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package flag_test
+
+import (
+ "flag"
+ "fmt"
+ "net/url"
+)
+
+type URLValue struct {
+ URL *url.URL
+}
+
+func (v URLValue) String() string {
+ if v.URL != nil {
+ return v.URL.String()
+ }
+ return ""
+}
+
+func (v URLValue) Set(s string) error {
+ if u, err := url.Parse(s); err != nil {
+ return err
+ } else {
+ *v.URL = *u
+ }
+ return nil
+}
+
+var u = &url.URL{}
+
+func ExampleValue() {
+ fs := flag.NewFlagSet("ExampleValue", flag.ExitOnError)
+ fs.Var(&URLValue{u}, "url", "URL to parse")
+
+ fs.Parse([]string{"-url", "https://golang.org/pkg/flag/"})
+ fmt.Printf(`{scheme: %q, host: %q, path: %q}`, u.Scheme, u.Host, u.Path)
+
+ // Output:
+ // {scheme: "https", host: "golang.org", path: "/pkg/flag/"}
+}