for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
package decode
import (
"io"
"reflect"
)
type Decoder struct {
r io.Reader
}
func NewDecoder(r io.Reader) *Decoder {
return &Decoder{r}
func (dec *Decoder) Decode(v interface{}) error {
rv := reflect.ValueOf(v)
if rv.Kind() != reflect.Ptr || rv.IsNil() {
return &InvalidUnmarshalError{reflect.TypeOf(v)}
return decode(dec.r, v)