我对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/