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
}
I read the flag.Int source code, and found:
Standard lib flag.intValue
does not implements String and Set method, I doesn't found them, how var value Value = &intValue
works?
(Sorry, my native language is not English.)