Avatar ·

如何从Go的map中获取键的切片:完整指南

大家好!我最近开始学习Go,遇到了一个看似简单但找不到优雅解决方案的问题。

我有一个用户数据的map:

users := map[int]string{
    1: "Alice",
    2: "Bob",
    3: "Charlie",
    4: "Diana",
}

我需要以[]int切片的形式获取所有用户ID(键)。在Python中,我只需写list(users.keys()),但Go中没有这样简单的函数。

我尝试了以下方法:

var keys []int
for key := range users {
    keys = append(keys, key)
}

这确实有效,但我觉得太冗长了。是否有内置函数或更惯用的方式?我特别关心:

  • 键的顺序——是否总是随机的?
  • 如何处理大型map(数百万条记录)?
  • 能否用一行代码实现?

感谢提供示例。