code: func (reader *SpecificDatumReader) Read(v interface{}, dec Decoder) error {
  	if reader, ok := v.(Reader); ok {
  		return reader.Read(dec)
  	}
  
  	rv := reflect.ValueOf(v)
  	if rv.Kind() != reflect.Ptr || rv.IsNil() {
  		return errors.New("Not applicable for non-pointer types or nil")
  	}
  	if reader.schema == nil {
  		return SchemaNotSet
  	}
  	return reader.fillRecord(reader.schema, rv, dec)
  }
docs: // Read reads a single structured entry using this SpecificDatumReader.
  // Accepts a Go struct with exported fields to fill with data and a Decoder to read from. Given value MUST be of
  // pointer type. Field names should match field names in Avro schema but be exported (e.g. "some_value" in Avro
  // schema is expected to be Some_value in struct) or you may provide Go struct tags to explicitly show how
  // to map fields (e.g. if you want to map "some_value" field of type int to SomeValue in Go struct you should define
  // your struct field as follows: SomeValue int32 `avro:"some_field"`).
  // May return an error indicating a read failure.