我对 Go 中的地图类型的理解有一个看似简单的问题。如果我创建一个简单的地图,例如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为什么迭代映射会创建 6 个条目而不是 3 个?https://play.golang.org/p/Ou67K1Kfvsf
2 回答
凤凰求蛊
TA贡献1825条经验 获得超4个赞
和
keys := make([]string, len(supportedCards))
您创建一个[]string
包含三个空元素的 。您可以使用它们的索引来分配它们。
当您稍后附加它时,新条目将添加到末尾,生成长度为 6 的结果,其中前三个为空。
慕斯王
TA贡献1864条经验 获得超2个赞
除了@xarantolus的答案之外,您可以通过以下方式保持 for-range 循环不变,而不是使用索引:
keys := make([]string, 0, len(supportedCards))
第三个参数是幻灯片的容量。参考: https: //tour.golang.org/moretypes/13
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消