Golang Go语言中 flag 标准库的用法问题,Var 函数声明参数是 Value 类型,但是用的时候却需要传递一个 *Value 类型的参数
Golang Go语言中 flag 标准库的用法问题,Var 函数声明参数是 Value 类型,但是用的时候却需要传递一个 *Value 类型的参数
最近在看一些开源 go 项目时,发现大家使用 flag 标准库处理参数时,用 flag.Var(&a, …) 来设置命令行参数,但是我查找 flag 标准库时,发现最终调用的是:
unc Var(value Value, name string, usage string) --> CommandLine.Var(value, name, usage) --> func (f *FlagSet) Var(value Value, name string, usage string)
所以有些疑问,为什么方法第一个参数是 Value 类型,而调用时却需要 *Value 类型?
更多关于Golang Go语言中 flag 标准库的用法问题,Var 函数声明参数是 Value 类型,但是用的时候却需要传递一个 *Value 类型的参数的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
<br>type Value interface {<br> String() string<br> Set(string) error<br>}<br><br>注意,Value 是一个 interface,要求实现 Set 方法.<br><br>举个例子<br>type A string<br><br>func (a A) Set(str string){<br> a = A(str)<br>}<br><br>type B string<br><br>func (b *B) Set(str string) {<br> *b = B(str)<br>}<br>
更多关于Golang Go语言中 flag 标准库的用法问题,Var 函数声明参数是 Value 类型,但是用的时候却需要传递一个 *Value 类型的参数的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
调用时并不是传入 *Value 类型, 而是实现了 Value 接口的对象的指针, 因为参数 Value 是接口类型
所以说,接口类型可以是一个自定义类型,或者是一个指针类型?