I won't remove the bufio.Buffer for Marshal now, it isn't a performance issue as far as I can tell, and I'd have to fake Flush().
// error if any.
func Marshal(v interface{}) ([]byte, error) {
var buf bytes.Buffer
// error if any.
func Marshal(v interface{}) ([]byte, error) {
var buf bytes.Buffer
- e := Encoder{Writer: bufio.NewWriter(&buf)}
+ e := Encoder{w: bufio.NewWriter(&buf)}
err := e.Encode(v)
if err != nil {
return nil, err
err := e.Encode(v)
if err != nil {
return nil, err
}
func NewEncoder(w io.Writer) *Encoder {
}
func NewEncoder(w io.Writer) *Encoder {
- return &Encoder{Writer: bufio.NewWriter(w)}
+ return &Encoder{w: bufio.NewWriter(w)}
"reflect"
"runtime"
"sort"
"reflect"
"runtime"
"sort"
+ w interface {
+ Flush() error
+ io.Writer
+ WriteString(string) (int, error)
+ }
}
}()
e.reflect_value(reflect.ValueOf(v))
}
}()
e.reflect_value(reflect.ValueOf(v))
}
type string_values []reflect.Value
}
type string_values []reflect.Value
func (sv string_values) get(i int) string { return sv[i].String() }
func (e *Encoder) write(s []byte) {
func (sv string_values) get(i int) string { return sv[i].String() }
func (e *Encoder) write(s []byte) {
if err != nil {
panic(err)
}
}
func (e *Encoder) write_string(s string) {
if err != nil {
panic(err)
}
}
func (e *Encoder) write_string(s string) {
- _, err := e.WriteString(s)
+ _, err := e.w.WriteString(s)
if err != nil {
panic(err)
}
if err != nil {
panic(err)
}