1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // 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/"}
- }
|