【发布时间】:2018-06-08 12:52:33
【问题描述】:
我正在尝试创建一个辅助函数,它将获取带有字符串键的映射并返回映射键的一部分。
问题是我希望函数不关心地图值的类型。
例如:
stringStringMap := map[string]string{
"one": "first",
"two": "second"
}
mapKeys(stringStringMap) // ["one", "two"]
stringIntMap := map[string]int{
"one": 1,
"two": 2,
}
mapKeys(strinIntMap) // ["one", "two"]
似乎解决这个问题的唯一方法是创建两个类似的助手。像这样的:
func mapKeys(m map[string]string) []string {
...
}
func mapKeys2(m map[string]int) []string {
...
}
但这看起来很难看。我正在尝试创建的这个辅助函数是否可行?如果不是,在编写此代码时我应该遵循一个好的约定吗?
【问题讨论】:
-
为什么投反对票?我应该如何更好地构建我的问题?
-
我没有投反对票,但我想投反对票的原因很正常:缺乏研究工作。
-
很公平,下次我会花更多时间在编程语言上,然后再问任何问题
-
如果您将地图声明为
map[string]interface{},那么您可以使用唯一函数迭代键(在所有情况下都是字符串)。