123456789101112131415161718192021222324252627282930 |
- package help
- // Reverse inverts the order of the elements in a collection.
- //
- // Unlike OrderBy, this sorting method does not consider the actual values
- // themselves in determining the order. Rather, it just returns the elements in
- // the reverse order from which they are produced by the underlying source.
- func (q Query) Reverse() Query {
- return Query{
- Iterate: func() Iterator {
- next := q.Iterate()
- items := []interface{}{}
- for item, ok := next(); ok; item, ok = next() {
- items = append(items, item)
- }
- index := len(items) - 1
- return func() (item interface{}, ok bool) {
- if index < 0 {
- return
- }
- item, ok = items[index], true
- index--
- return
- }
- },
- }
- }
|