如何在Go中从map获取键的切片:简单高效的解决方案
大家好!我是一名Go初学者,遇到了一个看似简单的任务,但一直找不到优雅的解决方案。
我有一个map,比如 `map[string]int`,其中键是用户名,值是他们的年龄。我需要获取所有键(名字)的列表,作为 `[]string` 切片,例如,将其传递给一个输出用户列表的函数。
在Python中,我只需写 `list(my_dict.keys())`。在JavaScript中,是 `Object.keys(myObj)`。而在Go中,我目前只看到手动遍历的选项:
```go
users := map[string]int{
"Alice": 25,
"Bob": 30,
"Charlie": 22,
}
var keys []string
for k := range users {
keys = append(keys, k)
}
```
这能工作,但看起来像是一个冗长的重复造轮子。我觉得对于这种常见操作,Go标准库中应该有一个内置函数。我查过 `reflect` 和 `maps`(Go 1.21+),但没有找到明确的答案。
问题:
1. 手动遍历真的是唯一