package remote import ( "bytes" "encoding/gob" ) type loadTasksResponse struct { Tasks []Task `json:"list"` } type Task struct { ID string `json:"id"` Title string `json:"title"` Complete int `json:"compl"` } type Tasks []Task func (t *Task) Encode() ([]byte, error) { buf := bytes.NewBuffer(nil) enc := gob.NewEncoder(buf) err := enc.Encode(*t) return buf.Bytes(), err } func (t *Task) Decode(b []byte) error { buf := bytes.NewBuffer(b) enc := gob.NewDecoder(buf) err := enc.Decode(t) return err } func (ts *Tasks) Encode() ([]byte, error) { buf := bytes.NewBuffer(nil) enc := gob.NewEncoder(buf) err := enc.Encode(*ts) return buf.Bytes(), err } func (ts *Tasks) Decode(b []byte) error { buf := bytes.NewBuffer(b) enc := gob.NewDecoder(buf) err := enc.Decode(ts) return err } func (ts Tasks) Length() int { return len(ts.TaskArray()) } func (ts Tasks) TaskArray() []Task { return []Task(ts) }