【发布时间】:2016-05-23 19:35:50
【问题描述】:
假设我有一张地图:map[string]string。我想获取此地图的排序键列表。所以我可以这样做:
func SortedMapKeys(m map[string]string) (keyList []string) {
for key := range m {
keyList = append(keyList, key)
}
sort.Strings(keyList)
return
}
然后我会有另一个map[string]bool 类型的地图。我也想得到它的钥匙。但问题是函数 SortedMapKeys 接受 map[string]string 参数。所以我需要编写完全相同的函数,只有一个区别——它将接受map[string]bool。
出于显而易见的原因,它不是一个选项。如果有一天我想更改获取和排序密钥的逻辑,我将需要跟踪和更新所有这些功能。此外,我将不得不为所有这些实际上做同样事情的函数编写相同的单元测试,因为它们的主体是 100% 相等的(代码重复)。
有什么方法可以创建一个可以接受map[string] 的通用函数?
【问题讨论】:
标签: list sorting dictionary go