从您的示例中,您尝试对根元素<records>而不是子元素进行排序<record>。
此示例在以下方面效果更好:
type ById []Recordsort.Sort(sort.Reverse(ById(records.Records)))你Len(),Swap()和Less()方法保持不变,但作为一个接收器使用一个Record实例来代替Records。
输出:
{{ records}
[{{ record} 64321 http://golang.com}
{{ record} 3456 http://www.lommers.org/sampleurl}
{{ record} 4 http://www.this-is-my-url.com}]}
Run Code Online (Sandbox Code Playgroud)
正如我在“ 如何避免重新实现sort.Interface用于类似golang结构的方法 ”中提到的那样,这随着Go 1.8的更改而改变,并提交ad26bb5:
您只定义一个Less()匿名lambda
a := ById(records.Records)
sort.Slice(a, func(i, j int) bool {
return a[i] > a[j]
})
Run Code Online (Sandbox Code Playgroud)