go - 为什么在只有3个实体的 map 上创建的数组中有6个条目?

标签 go

我对Go中的 map 类型有一个看似简单的问题。如果我创建一个简单的 map ,例如

var thisMap = map[string]string {
  "8f14e45fceea167a5a36dedd4bea2543": "Charming",
  "1679091c5a880faf6fb5e6087eb1b2dc": "Citi",
  "e4da3b7fbbce2345d7772b0674a318d5": "Chase",
}

将键填充到数组中
keys := make([]string, len(supportedCards))
for k := range supportedCards {
    keys = append(keys, k)
}

然后尝试将这些键连接成一个逗号分隔的值,该值可以附加到任何字符串
fmt.Println(strings.Join(keys,","))

我希望结果是
8f14e45fceea167a5a36dedd4bea2543,1679091c5a880faf6fb5e6087eb1b2dc,e4da3b7fbbce2345d7772b0674a318d5

但是我真正看到的是
,,,8f14e45fceea167a5a36dedd4bea2543,1679091c5a880faf6fb5e6087eb1b2dc,e4da3b7fbbce2345d7772b0674a318d5

为什么遍历 map 创建6个条目而不是3个?

https://play.golang.org/p/Ou67K1Kfvsf

最佳答案


keys := make([]string, len(supportedCards))

您将创建一个[]字符串,其中包含三个空元素。您可以使用它们的索引来分配它们。

稍后添加时,将在末尾添加新条目,生成长度为6的结果,其中前三个为空

关于go - 为什么在只有3个实体的 map 上创建的数组中有6个条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58920549/

相关文章:

intellij-idea - 使用 IntelliJ 进行项目设置

go - Ginkgo 到 Cobertura 和 JUnit

go - 在 win7-64 中调用 dll 时,golang syscall 遇到一些问题

go - 将字符串传递给 Syscall(uintptr)

go - 如何在 Gorilla mux 路由中获取 OR 模式

go - 如何创建扩展类型

mongodb - 使用 mongo-go-driver 与 MongoDB 的数据不一致

file - 在 Go 中使用相同的 *os.File 写入和读取文件

string - 内存中字符串去重

go - 在go中写入parquet文件的时间戳格式是什么