首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GAE Go中对切片进行排序

如何在GAE Go中对切片进行排序
EN

Stack Overflow用户
提问于 2013-03-29 17:52:14
回答 2查看 120关注 0票数 1

我正在尝试对切片进行排序。如何在gae中使用go?

我有结构体

代码语言:javascript
复制
type courseData struct {
  Key         *datastore.Key
    FormKey         *datastore.Key
  Selected    bool
  User        string
  Name        string
  Description string
  Date        time.Time
} 

我想在名称字段中对此实体类型的切片进行排序。

代码语言:javascript
复制
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]
      }                           
    }

我试过了

代码语言:javascript
复制
Sort(data Interface)

但不确定如何使用它。请帮帮忙。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-03-29 20:05:15

例如,

代码语言:javascript
复制
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)
    } 

输出:

代码语言:javascript
复制
Jane
John
Peter

需要导出CourseCourses以供sort包使用。

为了避免使该示例依赖于GAE,将类型*datastore.Key更改为string

票数 2
EN

Stack Overflow用户

发布于 2013-03-29 23:31:21

为什么不以正确的顺序从数据存储中请求实体呢?

代码语言:javascript
复制
q := datastore.NewQuery("Course").Order("Name")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15700908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档