In encoding/json the un-exported reflectValue function passes on all its arguments to another function.
func(e *encodeState) reflectValue(v reflect.Value, opts encOpts)
{
valueEncoder(v)(e, v, opts)
}
The call to valueEncoder can be made from wherever reflectValue is called. What's the motivation for this additional function ?