提问人:Suhail Gupta 提问时间:3/5/2023 更新时间:3/5/2023 访问量:34
使用通用类型参数 [duplicate] 从 map 返回顶级键
Return top level keys from map with a generalised type argument [duplicate]
问:
我有以下方法,它从 .但是它接受的参数必须是 类型的 。map
map[string]string
func GetAllKeys(m map[string]string) []string {
keys := make([]string, len(m))
i := 0
for k := range m {
keys[i] = k
i++
}
return keys
}
如果我有一个 but 和一个类型,我怎么能重用这个方法。有没有办法推广这个方法,因为它所要做的就是从地图中返回顶级键。map
map[string]map[string]string
答:
0赞
mkopriva
3/5/2023
#1
使用 Go 1.18+,您可以使用类型参数编写泛型函数:
func GetAllKeys[K comparable, V any](m map[K]V) []K {
keys := make([]K, len(m))
i := 0
for k := range m {
keys[i] = k
i++
}
return keys
}
https://go.dev/play/p/jV2eNKjZmZu
评论
0赞
Suhail Gupta
3/5/2023
如果你能解释一下,会更有帮助[K comparable, V any](m map[K]V) []K
1赞
mkopriva
3/5/2023
[K comparable, V any]
是类型参数,我已经更新了答案,其中包含指向相关规范部分的链接。
评论