func (f *FlagSet) IntVar(p *int, name string, value int, usage string) {
f.Var(newIntValue(value, p), name, usage)
}
func (f *FlagSet) Var(value Value, name string, usage string) {
flag := &Flag{name, usage, value, value.String()}
// ...
}
func newIntValue(val int, p *int) *intValue {
*p = val
return (*intValue)(p)
}
type intValue int
type Value interface {
String() string
Set(string) error
}
我读了flag.Int源代码,发现:
标准库flag.intValue
没有实现String和Set方法,我没有找到它们,var value Value = &intValue
如何工作?
(抱歉,我的母语不是英语。)