我在golang有桌子。我需要根据特定列对其进行排序。有人可以帮我继续吗?
table := ui.Table([]string{"SI No","Name","ID","status","submitted-at"})
strs := dat["resources"].([]interface{})
var ln int = 20
i:=0
for i < ln {
table.Add(strconv.Itoa(i+1), metadataName , metadataID, metadataStatus, metadataSubmittedAt)
i = i + 1
}
答案 0 :(得分:2)
标准库上的sort package包含interface,如果您为任何类型实现它,则可以使用sort.Sort()
函数对其进行排序。
即使ui.Table
对象来自您无法修改的包或库,您也可以使用ui.Table
作为基础声明一个新类型,并自己实现sort.Interface
,类似的东西:
type myTable ui.Table
func (m myTable) Len() int { return len(m) }
func (m myTable) Swap(i, j int) { m[i], m[j] = m[j], m[i] }
func (m myTable) Less(i, j int) bool { return m[i].col() < m[j].col() }
或者你知道一些对Table类型有意义的实现。在这里,我假设您的行有一个函数col()
,它返回您用于对该行进行排序的列的值,而Table
是一个行的片段,可能不是这种情况。
我希望我能提供更多帮助,但如果您不提供有关ui.Table
的任何详细信息,则无法帮助您了解任何实施细节。