2016-02-07 41 views
1

考慮以下幾點:指針轉到排序切片

type Item struct { 
    Title  string 
    Date  time.Time 
} 

type Items []Item 

func (slice Items) Len() int { 
    return len(slice) 
} 

func (slice Items) Less(i, j int) bool { 
    return slice[i].Date.After(slice[j].Date) 
} 

func (slice Items) Swap(i, j int) { 
    slice[i], slice[j] = slice[j], slice[i] 
} 

在main方法中,我有一個指針來Item片,必須進行排序。我的嘗試是:

items := make(Items, len(in.Items)) //in.Items is of type []*Item 
for i, value := range in.Items { 
    items[i] = *value 
} 

sort.Sort(items) 

in.Items = make([]*Item, len(items)) 
for i, value := range items { 
    in.Items[i] = &value 
} 

雖然它做我所需要的,是否有另一種方法來做到這一點?

回答

3

只是要Items項指針的列表:

type Items []*Item 

,它可以與你已經描述的方法進行排序。而已。