在golang中对表进行排序

时间:2018-01-15 05:35:40

标签: sorting go

我在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
}

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的任何详细信息,则无法帮助您了解任何实施细节。