当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


GO Value用法及代码示例

GO语言"flag"包中"Value"类型的用法及代码示例。

值是存储在标志中的动态值的接口。 (默认值表示为字符串。)

如果 Value 有一个返回 true 的 IsBoolFlag() bool 方法,则 命令行 解析器使 -name 等效于 -name=true 而不是使用下一个 命令行 参数。

对于存在的每个标志,按命令行顺序调用一次 Set。 flag 包可以调用带有 zero-valued 接收器的 String 方法,例如 nil 指针。

用法:

type Value interface {
    String() string
    Set(string) error
}

例子:

package main

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 main() {
    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)

}

输出:

{scheme: "https", host: "golang.org", path: "/pkg/flag/"}

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Value。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。