我正在尝试对切片进行排序。如何在gae中使用go?
我有结构体
type courseData struct {
Key *datastore.Key
FormKey *datastore.Key
Selected bool
User string
Name string
Description string
Date time.Time
} 我想在名称字段中对此实体类型的切片进行排序。
q := datastore.NewQuery("Course")
var courses []*courseData
if keys, err := q.GetAll(c, &courses); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
} else {
for i := range courses {
courses[i].Key = keys[i]
}
}我试过了
Sort(data Interface)但不确定如何使用它。请帮帮忙。谢谢!
发布于 2013-03-29 20:05:15
例如,
package main
import (
"fmt"
"sort"
"time"
)
type Course struct {
Key string // *datastore.Key
FormKey string // *datastore.Key
Selected bool
User string
Name string
Description string
Date time.Time
}
type Courses []*Course
func (s Courses) Len() int { return len(s) }
func (s Courses) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
type ByName struct{ Courses }
func (s ByName) Less(i, j int) bool { return s.Courses[i].Name < s.Courses[j].Name }
func main() {
var courses = Courses{
&Course{Name: "John"},
&Course{Name: "Peter"},
&Course{Name: "Jane"},
}
sort.Sort(ByName{courses})
for _, course := range courses {
fmt.Println(course.Name)
} 输出:
Jane
John
Peter需要导出Course和Courses以供sort包使用。
为了避免使该示例依赖于GAE,将类型*datastore.Key更改为string。
发布于 2013-03-29 23:31:21
为什么不以正确的顺序从数据存储中请求实体呢?
q := datastore.NewQuery("Course").Order("Name")https://stackoverflow.com/questions/15700908
复制相似问题