func valueString(ts *ts.TimeSeries, start, end time.Time) (string, error) { s := bytes.NewBufferString("[ '") if _, err := s.WriteString(ts.Key()); err != nil { return "", err } if _, err := s.WriteString("', "); err != nil { return "", err } for cursor, step := start, ts.Step(); cursor.Before(end); cursor = cursor.Add(step) { v, _ := ts.GetAt(cursor) if _, err := s.WriteString(strconv.FormatFloat(v, 'E', 2, 64)); err != nil { return "", err } if err := s.WriteByte(','); err != nil { return "", err } if step == 0 { break } } if s.Len() > 0 { s.Truncate(s.Len() - 1) } if err := s.WriteByte(']'); err != nil { return "", err } return s.String(), nil }