我在Go
和MongoDB
工作,并拥有以下MongoDB架构
[
{
"name":"sample",
"time": "2014-04-05",
"Qty":3
},
{
"name":"sample",
"time": "2014-04-05",
"Qty":3
}
]
我曾尝试使用以下代码创建上述文档
elements := make([3]map[string]string)
elements["name"] = "karthick"
elements["date"] = "2014-04-05"
elements["qty"] = 3
fmt.Println(elements)
但它没有用。
Error : cannot make type [3]map[string]string
任何建议都将不胜感激
答案 0 :(得分:10)
数组和切片之间存在差异。数组是编译时对象,而切片是运行时对象。因此,阵列比切片(例如长度)具有更多的信息提供给编译器。
在您的代码中,您尝试创建一个包含3个元素的map[string]string
数组。你可以这样做:
maps := [3]map[string]string{
make(map[string]string),
make(map[string]string),
make(map[string]string),
}
你必须为每张地图调用make,否则地图将被取消初始化(无)。
您还可以使用make:
创建包含3个(未初始化)元素的切片maps := make([]map[string]string, 3)
在这种情况下,您必须迭代maps
并使用make
初始化每个元素。
如果您使用mgo,最简单的解决方案是为您的数据创建结构:
type Item struct {
Name string `bson:name`
Date string `bson:date`
Qty int `bson:qty`
}
并在你的数组中使用它:
var items [3]*Item
答案 1 :(得分:1)
你想要达到什么目的?您混合了创建数组和映射的语法。
Here正在运作。
package main
import "fmt"
func main() {
elements := make(map[string]interface{})
elements["name"] = "karthick"
elements["date"] = "2014-04-05"
elements["qty"] = 3
fmt.Println(elements)
}